
libera todo el poder de tus soundcores! :)
un kit de herramientas de código abierto para parchear, modificar y mejorar el firmware de los auriculares soundcore de la serie q, con soporte planificado para otros modelos en el futuro.
nota: este proyecto es mi viaje personal hacia el mundo de la ingeniería inversa de hardware y los sistemas embebidos. fue creado por un adolescente y estoy aprendiendo sobre la marcha. espera errores, fallos y mucha diversión. ¡todas las contribuciones y consejos son bienvenidos!
este proyecto está dividido en dos partes:
también creé un proyecto de demostración: un port de DOOM basado en el proyecto DOOMBuds. ¡échale un vistazo también! =)
📚 lee la documentación completa 📚
este proyecto comenzó con los soundcore life q35. si quieres ayudar a probar o añadir soporte para un nuevo modelo, ¡abre un issue!
¡el soporte para otros modelos es un objetivo futuro!
nota: los dispositivos basados en los chipsets
bes2300*, bes1502*, bes1600son los candidatos más probables para soporte futuro.
openqore acaba de empezar. aquí tienes un plan aproximado de lo que viene a continuación:
esta guía asume que tienes python y git instalados en tu sistema.
1. descarga y extrae el archivo zip de releases
2. instala las dependencias
el parcheador requiere ffmpeg para la conversión de audio y pybluez:
windows:
pip install git+https://github.com/pybluez/pybluez.git
winget install ffmpeg
macos:
pip install git+https://github.com/pybluez/pybluez.git
brew install ffmpeg
ubuntu/debian:
pip install git+https://github.com/pybluez/pybluez.git
sudo apt install ffmpeg
3. obtén tu archivo de firmware
puedes descargar la imagen OTA aquí o leer la flash con UART:
➡️ guía de hardware: conexión por UART
leer la flash mediante ota (over-the-air) está planeado para una futura actualización. (si es posible :D)
4. ¡felicidades!
puedes encontrar las instrucciones de uso aquí
si has descargado la imagen de actualización ota de los servidores oficiales de actualización, selecciona la opción "sin ota boot"
nota: si has parcheado el firmware sin ota boot, necesitas añadirlo en la cabecera del firmware parcheado antes de flashear mediante UART. NO necesitas esto si estás usando el script besota!
esta sección contiene algunos de los hallazgos iniciales de la ingeniería inversa del firmware del q35.
los auriculares tienen varios modos de prueba ocultos. algunos de ellos podrían ser útiles para futuras actualizaciones o depuración.
modo de ingeniería: para entrar en este modo, mantén pulsado el botón de encendido, conecta los auriculares a un pc mediante usb-c antes de que se enciendan, y espera a que se enciendan.
rfcomm: los auriculares tienen dos puertos de comunicación serie. uno de ellos es escribible. hasta ahora, la única función que he logrado activar a través de este puerto es un UFR (explicación abajo). esto parece ser una medida de seguridad, ya que se activó probando varios códigos hexadecimales por fuerza bruta en lugar de un comando específico. curiosamente, este no es el reinicio estándar (encendido + vol+) sino algo diferente.
modo de prueba: este modo se activa de manera similar al modo de ingeniería, pero debes soltar el botón de encendido inmediatamente después de que el led blanco parpadee por primera vez, antes de la luz azul. los auriculares aparecerán entonces en el pc como un dispositivo con un error de "device descriptor request failed". puedes confirmar que estás en este modo por el led blanco, que parpadea más rápido de lo habitual. su propósito probablemente esté relacionado con el flashing del firmware. además, en este modo, ¡los auriculares pueden encenderse mientras se cargan!
restablecimiento de fábrica no documentado (UFR): se puede activar un restablecimiento de fábrica oculto pulsando rápidamente el botón de encendido varias veces mientras los auriculares están encendidos o enviando algo por el puerto serie virtual (arriba). esto hará que el firmware se cuelgue y luego fuerce un reinicio después de unos 30 segundos. ten en cuenta que esta acción borrará todos los datos de usuario, incluidos los ajustes del ecualizador, los emparejamientos bluetooth y otras configuraciones.
el firmware parece ser un binario monolítico dividido en múltiples secciones. cada sección crítica está protegida por una suma de comprobación . los futuros parcheadores recalcularán automáticamente estas sumas de comprobación después de cualquier modificación para evitar fallos de arranque.
las contribuciones son lo que hacen de la comunidad de código abierto un lugar tan increíble para aprender, inspirar y crear. cualquier contribución que hagas es muy apreciada.
si tienes una sugerencia que pueda mejorar esto, haz un fork del repositorio y crea un pull request. también puedes simplemente abrir un issue con la etiqueta "enhancement". ¡no olvides darle una estrella al proyecto! ¡gracias de nuevo!
git checkout -b feature/amazing-feature).git commit -m 'feat: add some amazing feature').git push origin feature/amazing-feature).si encuentras útil este proyecto y quieres apoyar su desarrollo futuro, ¡puedes invitarme a un café o algunos snacks a través de boosty! cada contribución es muy apreciada y me ayuda a dedicar más tiempo a openqore.
este proyecto cobró vida con el uso extensivo de asistentes de codificación impulsados por ia (como claude y chatgpt). aunque la ingeniería inversa, la investigación y las decisiones arquitectónicas centrales fueron tomadas por el autor, la ia jugó un papel crucial en acelerar el proceso de desarrollo, escribir código repetitivo y depurar.
este es un proyecto moderno construido con herramientas modernas.
este proyecto está licenciado bajo la licencia mit. puedes encontrar el texto completo de la licencia en el archivo license.
| modelo | chipset | estado |
|---|
| soundcore life q35 | bes2300p | ✅ compatible |
| soundcore life q30 | bes2300p | ❔ debería funcionar pero necesita pruebas |
| soundcore life tune pro | bes2300p | ❔ debería funcionar pero necesita pruebas |
| soundcore life tune | bes2300p | ❔ debería funcionar pero necesita pruebas |
| soundcore life q20i | bes2300p | ❔ debería funcionar pero necesita pruebas |
| soundcore space one | bes1502x | ❌ en desarrollo |
crc3216khz, mono, SBC.48khz, estéreo. esto mejora significativamente la calidad de los sonidos personalizados.bes2300p de bestechnic (bes, best). se puede encontrar una hoja de datos buscando.uart disponible en la placa de circuito impreso (pcb), que se utilizó para la depuración inicial y es el método principal para desbrickear un dispositivo después de un flashing fallido. el chip bes2300p en sí tiene dos puertos uart, pero solo uno de ellos está expuesto como almohadillas de fácil acceso en la pcb.