release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Search | Go
Wiki > Main > FiioM3K

FiiO M3K

Native port status

Feature Working Notes
Audio playback Yes >= 176.4 KHz playback and too much DSP can make the UI unresponsive
Recording Yes  
Display Yes Known bug: very rarely, system might lock up after screen turns on
Buttons/touchpad Yes  
MicroSD Yes  
Battery charging Yes  
Dual boot Yes  
USB Partial File transfers are slower than the OF
USB DAC No Feature not available in Rockbox; use the OF for this
Rockbox utility support No Manual installation is required

The native port is the current supported way to run Rockbox on the FiiO M3K. At present, it should be stable for audio playback and general everyday use, although as with any software there may be bugs. This port should not be confused with the unofficial XVortex port or the "M3K Linux" port, which both run as an application under the original firmware's Linux kernel. The native port of Rockbox drives the hardware directly, and doesn't rely on the original firmware or the Linux kernel.

Rockbox can be installed alongside the original FiiO firmware in a dual-boot installation. The Rockbox bootloader lets you select which firmware you want to boot, defaulting to Rockbox.

The Rockbox Utility does not yet support the M3K, so installing the bootloader is a manual process. For installation instructions, see JztoolInstall. After installing the bootloader, you can install and update Rockbox by unzipping a daily build to your SD card.

Hardware summary

Component Model Notes
SoC X1000E 1.0GHz MIPS XBurst with 64MB of SIP LPDDR RAM
NAND ATO25D1GA-10ED 1Gb SPI SLC NAND Flash
PMU AXP192 I2C PMU, driver is AXP173?
Backlight driver SGM3122 simple PWM LED driver
Touch controller FT6236U I2C
LCD controller likely ST7789S educated guess from Fiio's M3K kernel source
DAC AK4376A I2S
Microphone MSM42A3722H9KR plain MEMS analog mic
USB OVP IC WP3881  
Battery 413372 2-wire with built-in basic protection circuit, 1100mAh

See also: IngenicX1000

Known issues

  • Very rarely, the LCD driver might be causing a hang when the screen turns on after being off.

  • The DAC makes popping noises when changing frequency. Mostly occurs when switching to or from a frequency >= 96 KHz.

  • The touchpad sometimes goes wonky on boot and won't respond properly to scrolling or button presses for the first few seconds. There's nothing that can really be done about this except artificially forcing Rockbox to wait longer in the splash screen so you can't see the problem.

  • Scrolling might feel a bit off because the touchpad doesn't report coordinates linearly as it should. In particular the edges of the touchpad seem more sensitive than the middle, so scrolling in the middle of the pad requires a bigger motion than at the edges.

Internal images

PCB images:

PCB_front_s.png PCB_back_s.png

Closeup of the PWM LED controller and the I2S DAC:

SGM3122_s.png AK4376A_s.png

Screen assembly closeup:

TODO: transcribe silkscreen text

screen_assembly_overview_s.png

TODO: transcribe silkscreen text and pinout

touch_controller_closeup_s.png

Datasheets

All datasheet links were archived versions whenever possible.

Disassembly instructions

Disclaimer: everything you do is at your own risk and I cannot be held responsible if you damage your device or overheat the battery and it catches on fire.

Please don't attempt it unless you can afford to damage the device, this is for your reference only. There are no real benefits of disassembling the device (internal photos are already available from me and all the important chips have been identified) unless you want to access the native UART port (which doesn't have an interactive boot console that you can interrupt btw, the loader is not u-boot), and you'll need some E6000 adhesive to glue the screen back if you want to put it together again.

Tools required:
  • Hair dryer
  • LCD screen repair plier tool with removable suction cups
  • E6000 adhesive
  • Precision Philips screwdrivers
  • Plastic pry tool (the triangular type)
  • A thin plastic card
  • Xacto knife
  • Kapton tape

Procedure:
  1. Unscrew a suction cup from your plier tool, firmly adhere it to the upper back side of the device with the E6000 glue, let it sit for at least 14h. Be generous with the glue, you'll be able to cleanly remove them later before they harden completely. This is necessary because the aluminum back doesn't play nice with the suction cup, it slips off before you can exert enough force onto the front glass.
  2. Heat up the front of the device until the aluminum frame is very hot to the touch. Immediately screw the glued suction cup back onto the plier tool, and you should be able to get enough grip to pull the screen off now. You must pull it apart from the LCD side (not the touch controls side) to avoid damaging the ribbon cables.
  3. Detach the two ribbon cable connectors and remove the screen assembly. Beware that the touch controller ribbon cable has a sticky back, carefully peel it off the board with a tweezer. Hit it with a hair dryer if it's hard to remove, that'll hopefully soften the adhesive.
  4. Take your triangular pry tool, use it to push up & warp the upper panel from the inside of the device, there's an aluminum overlay that you'll hopefully be able to separate with your xacto knife (the key here is to cut away the adhesive instead of prying). There will be two screws hidden under that overlay, remove them and you'll be able to side the entire inner tray out from the bottom side.
  5. Peel off the black insulation tape on the board to reveal some test points, including UART. Put on some Kapton tape before you attach the screen to prevent the metal bracket from shorting anything out.
  6. Remove the 6 screws from the plastic tray (one screw is smaller than the rest), and you can take the board out.
  7. Heat up the board again from the front side and use a thin plastic card to slowly separate the battery from the board. The PCB bends pretty easily so be careful NOT to bend it in the process, I find gripping on the PCB on the long sides can reduce bending. After you detach and desolder the battery, the disassembly is now complete.

I Attachment Action Size Date Who Comment
AK4376A_s.pngpng AK4376A_s.png manage 2611.1 K 07 Jul 2020 - 01:33 EdwardBiryukov  
PCB_back_s.pngpng PCB_back_s.png manage 4760.8 K 07 Jul 2020 - 01:32 EdwardBiryukov PCB back
PCB_front_s.pngpng PCB_front_s.png manage 4261.3 K 07 Jul 2020 - 01:32 EdwardBiryukov PCB front
SGM3122_s.pngpng SGM3122_s.png manage 2744.7 K 07 Jul 2020 - 01:33 EdwardBiryukov  
m3k_alsa.txttxt m3k_alsa.txt manage 3.0 K 15 Oct 2020 - 11:55 SolomonPeachy Exported ALSA Mixer controls
nand.binbin nand.bin manage 128.0 K 28 Mar 2021 - 01:19 AidanMacDonald first 128k of NAND flash
screen_assembly_overview_s.pngpng screen_assembly_overview_s.png manage 3248.6 K 07 Jul 2020 - 01:34 EdwardBiryukov  
touch_controller_closeup_s.pngpng touch_controller_closeup_s.png manage 4079.7 K 07 Jul 2020 - 01:34 EdwardBiryukov  
zadig.pngpng zadig.png manage 22.3 K 15 May 2021 - 16:06 AidanMacDonald  
r21 - 27 Mar 2022 - 13:49:24 - AidanMacDonald

Copyright © by the contributing authors.