Updates on the FiiO X7 from Linux

the problem(s)

The FiiO X7 media player seems pretty reasonable for a mid-range personal DAP. It plays Ogg Vorbis and FLAC codecs, which means that we here are able to listen to our entire music collection on the move, and the addition of the modular AM2 amp means one doesn't have to suffer a drop in quality when drowning out the rest of the world.

This isn't a sales pitch, however, and you can read more of that from the horse's mouth.

After going through the standard process of unpacking, charging, updating, customising wallpaper (very important) and adding content, things seemed to be going well. I'll add more on adding the content once things have settled more, but things seemed to be in pretty good shape, until a day or so in and Google Play Services would unexpectedly stop every few seconds. Placing this $600USD collection of consumer electronics between us and our precious audio.

The suggested course of action from FiiO is to either reset to factory defaults, or to flash with the public beta firmware. I started with the factory defaults and being careful about which customisations I made to the player when reviving it. I'm actually OK having to wipe it clean once every week or two -- that's how I sync my playlists and audio anyway. However, it didn't seem to solve the problem for more than a day at a time.

The flash upgrade going from v2 to v3 isn't the same as other updates. So I can't do an OTA update, nor can I copy the .ZIP file manually to the device and update it. Presumably there's a partitioning layout change behind that. I don't, however, have a Windows machine to connect the device to in order to run the FiiO update tool.

the solution(s)

With the warning at the top of this page in mind, I figure that unstable beta code can't be too worse from stable firmware that prevents my audio player from playing audio. Given that the FiiO X7 is based on the Rockchip SoC I thought it worth trying to update it using the generic tools. The following allowed me to boot the 3.1.2 beta firmware without a Windows PC:

  1. Get the Linux Upgrade tool (v1.2) from here.
  2. Unpack it somewhere (such as ~/tmp) thusly:
    tar zcvf Linux_Upgrade_tool_v1.2.tar.gz -C ~/tmp
  3. Get the FiiO firmware beta update tool (not the OTA update) that contains the beta firmware. I found a copy here. This contains a bunch of Windows binaries you probably don't need, but also contains a file called update.img which is the bit we care about.
  4. Unpack the update tool thusly:
    cd ~/tmp; unzip ~/Downloads/X7*Firmware*.zip.
  5. Change to the directory containing the firmware and update tool:
    cd ~/tmp/X7*Firmware*3.1.2_beta
  6. Take your powered-off FiiO X7, hold down the top button on the left-hand side (volume up) and plug in the USB cable. This will start it in recovery mode, while you then...
  7. the Linux update tool:
    sudo ../Linux_Upgrade_Tool_v1.2/upgrade_tool.
  8. You should see the following:

    List of rockusb connected
    DevNo=1	Vid=0x2207,Pid=0x310b,LocationID=11c	Loader
    Found 1 rockusb,Select input DevNo,Rescan press R,Quit press Q:

    It found my device as DevNo 1, so I typed in '1' and hit enter and at the Rockusb> prompt, used the UF command to use the downloaded update.img file as a firmware update, as you can see here:

    Rockusb>UF update.img
    Loading firmware...
    Support Type:RK31   FW Ver:4.4.02   FW Time:2017-01-06 18:51:45
    Loader ver:2.31	Loader Time:2016-03-25 21:30:45
    Upgrade firmware ok.

    At which point I rebooted into a brand new and fresh Android 5.1 environment on my FiiO X7.

    This all seems to have been working well for me so far, but isn't something that FiiO has recommended and I don't know that it's not going to end horribly. Caveat Hacker.

Twitter: @IncompleteIO