Fiio X1
Overview
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.
Components
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:
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.
Pins
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
--
AmauryPouly - 29 Mar 2015
Copyright © by the contributing authors.