bosefirmware / ced

Bose Firmware / Software - ced (AE2, Frames, Noise Cancelling Headphones 700, OE, On-Ear Wireless, QuietComfort 35 II / QC35 / QC35II, QuietControl 30 / QC30, SoundLink Color II, Micro, SL Mini Special Edition, Mini II, Revolve, SoundSport Free, Pulse, Wireless, SoundWear Companion, connect)
426 stars 88 forks source link

Do any methods still work for NC 700 now? #47

Open therealfumbles opened 1 month ago

therealfumbles commented 1 month ago

I've tried the patched windows version and redirecting the current updater version with Charles but every time I go to the advanced window the firmware dropdown list is empty.

kazuki-vim commented 4 days ago

I created a manual for QC 45 (https://github.com/kazuki-vim/bose-qc45-firmware), but NC700 is also consuming bin firmware, so you can reuse. Only thing you need to do is

document.getElementById('smartdevice_targetfirmware').appendChild(new Option('4.0.4-4360+de6a887', '4.0.4-4360+de6a887'));

You need to change 4.0.4-4360+de6a887 to latest firmware version of NC700. Then use official version of Updater, download your desired firmware file and rename it to bose.bin just like described in the manual.

Hope it can help

therealfumbles commented 4 days ago

Thanks for your help. I tried this but had no luck.

The first console command enabled the advanced mode. But the second command (after I replaced the firmware info) did nothing. No dropdown appeared on the updater page.

I went ahead and copied the renamed firmware file to the temp folder and ran the main.py script. It printed the path to the temp folder but nothing else happened. No update button appeared on the updater page.

kazuki-vim commented 4 days ago

@therealfumbles then maybe the html tag of dropdown menu has different information (id) Can you inspect and check the select html tag's ID, then replace smartdevice_targetfirmware with ID founded above

therealfumbles commented 4 days ago

After I run the second command it prints this to the console:

<option value="1.8.2-11524+e0f7590">1.8.2-11524+e0f7590</option>

Then if I check the page source I see it has populated the list:

<div style="display: none;"><span class="ic_label" id="smartdevice_upgradetotarget">Update software to&nbsp;version: </span><span id="smartdevice_targetfirmware_container"><select id="smartdevice_targetfirmware" class="form-control"><option value="1.8.2-11524+e0f7590">1.8.2-11524+e0f7590</option></select></span></div>

I wondered if "display" set to none was the reason for the dropdown not showing up. So I changed it from none to block. I don't know if this is the correct value but it made the dropdown list visible with the inserted firmware version.

The issue seems to be the web site is still hiding the update option even after injecting a firmware version into the update list.

therealfumbles commented 2 days ago

I managed to get my NC 700s downgraded to 1.3.1. Thanks to everyone for posting various solutions. I combined a few of them to successfully downgrade. This method will probably work for other devices.

1) Install https://downloads.bose.com/ced/boseupdater/windows/BoseUpdaterInstaller_7.1.7.5136.exe or https://downloads.bose.com/ced/boseupdater/mac/BoseUpdater_7.1.7.5136.dmg. 2) Run C:\Program Files (x86)\Bose Updater\BOSEUPDATER.EXE or '/Applications/Bose Updater.app/Contents/MacOS/Bose Updater' with -d https://raw.githubusercontent.com/bosefirmware/ced/master/lookup.xml. 3) Go to btu.bose.com. Follow guide at https://github.com/bosefirmware/ced/issues/35#issuecomment-1676409635 to bypass Updater version check. 4) Hit a+d+v+up+down on keyboard or enter window.dispatchEvent(new Event('advancedmode_triggered')) in browser dev tools Console tab to get to advanced mode. Page should show Update Now button but firmware list will be empty. 5) Add downgrade firmware version to list by entering the following into Console: document.getElementById('smartdevice_targetfirmware').appendChild(new Option('1.3.1', '1.3.1-2028+de73ce1'));. 6) Click Update Now button to begin downgrade. Update page shows version 1.8.2 but will flash the chosen firmware version. When the update completes and the page refreshes the 1.8.2 update will be offered again and the current firmware version will be shown below.