tchebb / bose-dfu

Firmware updater for various Bose devices
MIT License
37 stars 4 forks source link

Add support for Bose Noise Cancelling Headphones 700 #1

Closed minhtrancccp closed 2 years ago

minhtrancccp commented 2 years ago

I ran the binary on my Windows 11 build 22616.1 for my Bose 700. I could execute bose-dfu.exe list, which return:

05a7:40fc X935501CG10809171J40020 Bose Noise Cancelling Headphones 700 [UNTESTED device in unknown mode]

But whenever I tried other commands (bose-dfu.exe enter-dfu -f or bose-dfu.exe info -f), here's what I got back:

[WARN  bose_dfu] Device has not been tested with bose-dfu; by proceeding, you risk damaging it
[WARN  bose_dfu] Cannot determine device's mode; command may damage devices not in normal mode
USB serial: X935501CG10809171J40020
Error: USB transaction error while requesting info field

Caused by:
    hidapi error: The parameter is incorrect.
tchebb commented 2 years ago

Thanks so much for testing a new device! It looks like your device doesn't accept the same normal-mode commands that mine does. Hopefully, the DFU-mode commands are more similar to mine, but we won't know that until you can successfully get it into DFU mode! Can you gather the following information to help me figure out what commands your device wants?

  1. The error message from bose-dfu when you run enter-dfu. I assume it's substantially similar to the info one you pasted, but confirmation would be nice.
  2. A copy of the device's HID descriptor. I'm not familiar with the usual way to get this on Windows, but a quick Google indicates that https://github.com/todbot/win-hid-dump can do it.
  3. (If possible, I know this one's a big ask.) A USB packet capture of the official updater updating your device (or even just starting up while your device is connected. You can gather this with Wireshark (make sure to install USBPcap during installation).

Also, do you have the ability to build and run bose-dfu from source? It'll be easier to debug if so since I can send you patches to test. If not, I can send you prebuilt binaries, but those are harder for me to build (since I don't use Windows regularly).

tchebb commented 2 years ago

Actually, I just found https://github.com/iclemens/bose which contains some of the things I asked for from someone else with the same device. I'll take a look at them in detail and let you know if it seems to speak the same protocol that bose-dfu implements.

I think it might not, from a quick skim of that repo's README and the fact that its firmware files aren't in .dfu format. If that's the case, extending bose-dfu might be just as much work as creating a whole new tool.

iclemens commented 2 years ago

I just had a quick look and it looks like the protocol is quite different. Unfortunately I don't have the dumps anymore to confirm.

As far as I could see, the procedure is quite similar to this: https://developer.qualcomm.com/qfile/34081/csr102x_otau_overview.pdf

Perhaps there are other devices based on that architecture that have an open source updater implementation.

tchebb commented 2 years ago

Thanks for looking, @iclemens! Unfortunately, that probably means that adapting this tool to support the NC 700 headphones would be nearly as much work as writing a new tool entirely. As such, I'm going to close this as WONTFIX for now since I don't have the time or hardware to undertake that effort. If someone else does, though, I am open to patches that add support for the NC 700's protocol as long as they don't make the existing protocol implementation harder to maintain.

tchebb commented 2 years ago

I've published a new release, v1.1.0, which notes that we don't support NC 700 headphones in the README and prevents them from showing up in bose-dfu list.