dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Search | Go
Wiki > Main > FiioX1

Fiio X1


This is the page for the Fiio X1 port. This device has very similar hardware to the XDuooX3.

Port Status

See FiioX1Port

Main Features

  • Capacities: 128M internal Flash
  • TFT screen (320 x 240, 30 FPS) LCD screen
  • Headphone/Line-out output
  • 24-bit/192KHz DAC + amplifier
  • Hi-speed micro-USB 2.0 port
  • Expandable microSD card slot and microSDHC card slot

Recovery mode

The JZ4760 chip has a usb recovery mode documented in the datasheet. The Fiio X1 can be put in this mode by the following procedure:
  • Turn off the device
  • Push the select button
  • While holding the select button down, plug in the USB cable
  • The screen will stay black and the device will then register itself as a Ingenic device: 601a:470 Ingenic Semiconductor Ltd.

When in recovery mode, the device uses a custom protocol documented in the datasheet. There is a tool in the rockbox repository to send commands to the device.

Boot Procedure

On boot, the cpu will either enter recovery mode or boot from the NAND. When booting from NAND, the CPU will load 8KB of code to the cache and execute them (see bootloader_stage1.bin attached to this page). This first bootloader (IPL) initializes the RAM and loads a secondary bootloader (SPL) at 0x80600000. The SPL is at offset 0x400 (in pages, or 2MiB in bytes). The SPL initializes the LCD and displays an animation while loading the main firmware.

Factory boot

By holding the shortcut button, the device will enter recovery mode and check for factory.x1. If this file exists, it will load it to memory, unscramble it (using the same scrambling algorithm as for FiioFirmware sys.bin) and run it at address 0x80001000.

Upgrade procedure

By holding the shortcut button, the device will enter recovery mode and check for x1.fw to perform an upgrade. The file must use the FiioFirmware format. The exact way the upgrade procedure works is unclear.

Flash format

The first 2MB are reserved for the IPL, containing many copies of it, as described in the datasheet. The SPL is at 2MiB and of size 1MiB. More investigation are needed to understand the structure of the flash file system and how does it compare to the upgrade file.

Firmware Files

See FiioFirmware for an analysis of the Fiio firmware format.


There are currently two major hardware versions of the device. The common components are:

  • Ingenic JZ4760B?: basically a JZ4760 with a few modifications. See IngenicJz4760B
  • Texas Instruments PCM5142 DAC + DSP, 24-bit/192KHz
  • OPA2322 pre-amplifier
  • ISL28291 headphone amplifier

The hardware V1 is:
  • LCD Hitachi TX05D125VM0AAA? module 320x240 with Samsung S6d0171 controller (somewhat compatible with ILI9342 except for extra init commands)
  • ATO MST9D16D32FMH?-540ES: 1Gbit SLC NAND x16 50ns + 512Mbit Mobile DRR x32 400 Mbps. See

The hardware V2 is:
  • LCD MZ2D0N148?-A module 320x240 with ILI9342C? controller
  • Fidelix FMN1SD5TBS?-50IB: 1Gbit SLC NAND x16 50ns + 512Mbit Mobile DRR x32 400 Mbps. To be confirmed

The backlight also has variations (possibly independent of hardware version): some use pin PE1 and some use pin PF3. In theory PE1 can be used for PWM but the controller does not use PWM, but instead uses a long low pulse to reset level and then high/low short pulse to increase backlight level.


Pin Use/Dir Description
PA20 In Unknown
PA22 In Unsure ("line ctl" -> headphone controls ?)
PA23 In Unsure (headphone detection ?)
PA28 In Hardware version: 1 is V1 and 0 is V2
PA29 In Backlight type: 1 is PE1 (PWM ?), 0 uses PF3
PA30 In Power button
PB5 Out Unknown, set to 0 on boot
PB10 Out PMU related: 500mA/1A charge limit selection?
PB12 Out Unknown, set to 1 on boot
PB13 In Charging done signal
PB14 ? Unsure/Unknown (apparently input)
PB15 Out PMU related: enable/disable charger?
PB16 Out Blue led enable
PB26 In SD detect
PC9 Out LCD related, chip select ? rd ?
PC15 Out Unknown, set to 1 on boot
PC18 Out LCD rs, the OF drives it manually for some reason
PC29 In Volume down button
PC31 In Volume up button
PD11 Out PMU related, only ever set to 1
PD17 In Select button
PD27 In Left button
PE1 Out/pwm LCD backlight
PE4 Out LCD reset
PE8 In Back button
PE9 In Right button
PE12 Out unknown
PE15 In Wheel
PE17 In Wheel
PF0 Out LCD related, unsure if actually used
PF3 Out LCD backlight
PF4 Out Output "mute" (to clarify)
PF8 Out Headphone amplifier power enable ?
PF9 Out Audio related
PF10 In USB detect
PF11 In Menu button

PCB Scans

pcb_Front.jpg pcb_back.jpg cpu.jpg all_parts.jpg

-- AmauryPouly - 29 Mar 2015
I Attachment Action Size Date Who Comment
all_parts.jpgjpg all_parts.jpg manage 120.9 K 04 Apr 2016 - 14:06 XieLanqing all parts
bootloader_stage1.binbin bootloader_stage1.bin manage 8.0 K 14 Mar 2016 - 22:42 AmauryPouly  
cpu.jpgjpg cpu.jpg manage 248.5 K 04 Apr 2016 - 14:02 XieLanqing cpu
fiiox1_ipl_hw_v1.binbin fiiox1_ipl_hw_v1.bin manage 8.0 K 05 Jun 2016 - 14:24 AmauryPouly Fiio X1 First stage loader, extracted from HW version 1.0
fiiox1_spl_hw_v1.binbin fiiox1_spl_hw_v1.bin manage 1024.0 K 05 Jun 2016 - 14:24 AmauryPouly Fiio X1 Second stage loader, extracted from HW version 1.0
pcb_Front.jpgjpg pcb_Front.jpg manage 107.3 K 04 Apr 2016 - 14:01 XieLanqing PCB_Front
pcb_back.jpgjpg pcb_back.jpg manage 190.3 K 04 Apr 2016 - 14:01 XieLanqing PCB_Back
rom.binbin rom.bin manage 8.0 K 14 Mar 2016 - 22:42 AmauryPouly  
r29 - 26 Feb 2018 - 22:58:22 - AmauryPouly

Copyright by the contributing authors.