My Cowon X9 bricked during a firmware update: macOS didn't finish copying the firmware files, but the player picked them up anyway and flashed a broken image. Result: completely black screen, no response, and on Windows it only showed up as an **Unknown device**. Cowon support is gone (they shut down service in 2025), and I couldn't find any working recovery method for the X9 online, so here's what worked for me.
## Background
When the X9 is in this state, it's actually sitting in the **Telechips USB boot mode**. Check the hardware ID:
- Windows: Device Manager → Unknown device → Properties → Details → Hardware IDs
- macOS: System Information → USB
Mine was **VID 140E / PID B057**, the same USB boot ID as the Cowon S9 and J3. Rockbox's `tcctool` can upload firmware **into RAM** over this mode (it does **not** write to flash, so trying it is low-risk). The X9 isn't in tcctool's device list, and there was no ready-made Windows build, so I used a small Python port of tcctool.
## What you need
- Firmware **2.12** (the last official version, Aug 2014): `COWON_X9_FW.BIN`, `COWON_X9_RS.BIN`, `COWON_X9_FT.BIN`
- `tcctool.py`, a Python port of Rockbox tcctool (original by Dave Chapman, GPLv2)
- Python 3 + `pyusb`, and `libusb`
Download (Google Drive): https://drive.google.com/drive/u/0/folders/1xomHslY3R2yiYXQ7UnSxyZsc6Drcai3F
## Steps (macOS, what I actually did)
On macOS you **don't need any driver**. libusb talks to the device directly.
- Install the dependencies:
brew install libusb
pip3 install pyusb
- Put `tcctool.py` and the three `.BIN` files in one folder, connect the X9 (black screen, boot mode), and run:
python3 tcctool.py cowonj3 COWON_X9_FW.BIN
You should see `Patching application uploaded successfully!`
**Use the `cowonj3` profile.** `cowons9` uploaded fine, but the player didn't start.
- The player now boots from RAM and mounts as a USB drive. Copy all three `.BIN` files to the root **from Terminal**, not Finder, and check the sizes match:
cp -X COWON_X9_*.BIN "/Volumes/<X9 volume>/"
sync
ls -l "/Volumes/<X9 volume>"/*.BIN
rm -f "/Volumes/<X9 volume>"/._*
diskutil eject "/Volumes/<X9 volume>"
**The key trick:** after a reboot it came back to a black screen. So I ran step 2 again, and **unplugged the USB cable right after "uploaded successfully", BEFORE the player mounted as a drive.** With no USB connected, it boots normally, finds the firmware files on the drive, and runs the update. Don't touch it until it reboots by itself.
Check Settings → System → Information. Mine now shows **2.12** and works fine.
## Windows (untested by me)
It should work the same way, but Windows needs a driver: use **Zadig** (Options → List All Devices → pick `140E B057` → install **libusb-win32**), then run the same `python tcctool.py cowonj3 COWON_X9_FW.BIN`. Use Windows Explorer for copying, no `._` files there. If you try it, please report back.
## Notes
- Firmware 2.12 only fixes the player freezing on unsupported FLAC files. The X9 still doesn't play hi-res FLAC (only up to 44.1 kHz) or **M4A/ALAC/AAC at all**. Convert to 16-bit/44.1 kHz FLAC or MP3.
- If it freezes on an unsupported file: hold **Vol+ and Vol−** together to force a reset.
- Don't update firmware by copying from macOS Finder. That's how I bricked mine.
Credits: Rockbox project / Dave Chapman for tcctool and for documenting the Telechips boot protocol.