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



Search | Go
Wiki > Main > MPIOHD200Port

Driver status

driver status comments
LCD working Based mainly on iaudio remote display code (the same chip TL0350). Minor adjustments needed.
Backlight working Backlight brightness is supported
IDE working  
USB working with problems
Works both in bootloader and in rockbox itself. In rockbox itself I made extensive testing and usb bridge mode works fine. I haven't tested recent bootloader so I leave this warning for now. Partition table gets corrupted from time to time . When battery is low usb mode is flaky. *
Keys working Keymap is far from perfect
DAC some capabilities not used ALC and Adaptive bass mode not supported
FM Radio working  
Recording working Patch implementing all advanced codec functions is pending.
Battery status working Conversion from voltage to battery level needs adjusting.
Battery charging working  
Remote working  

* - This is probably linux specific. Genesys chips are known to be buggy and do not support long transactions (above 64kB). USB storage driver in linux kernel sets max_sectors to 64 (32kB transaction) for genesys chips (instead of 240 which is used by default). MPIO decided to overwrite descriptors for USB so genesys specific workaround is not picked up and as such usb connection fails when You transfer more than 64kB. To fix this You have to craft udev rule that sets max_sectors to 128 or 64 for MPIO (64 is confirmed to work by Genesys support, 128 works ok for most people and is what windows use). I use such udev file:

# This MPIO mp3 players uses Genesys GL811E USB->ATA bridge which is known to be buggy.
# Since USB PID/VID are overriden whith MPIO ones usb quirks are not picked

# MPIO HD300
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2735", ATTRS{idProduct}=="1005", RUN+="/bin/sh -c 'echo 64 > /sys/block/%k/device/max_sectors'"

# MPIO HD200
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2735", ATTRS{idProduct}=="1004", RUN+="/bin/sh -c 'echo 64 > /sys/block/%k/device/max_sectors'"

Install procedure

  1. Download bootloader from mpio hd200 bootloader v1.0
  2. Download mkmpioboot utility
  3. Download official firmware for HD200 firmware_hd200_v13005.zip (note I tested only 1.30.05 version)(official site seems to be down, try this link cached firmware_hd200_v13005.zip)
  4. Unpack the archive with original firmware, inside You will find 3 files: HD200_UPG.SYS, HD200ICON.sys and unicode.sys
  5. Unpack the archive with bootloader, inside you will find 3 files: bootloader.mpio, bootloader.map and rockbox-info.txt
  6. Process firmware upgrade file HD200_UPG.SYS to include our bootloader: mkmpioboot HD200_UPG.SYS bootloader.mpio HD200_UPG.rb
  7. Connect Your DAP to USB and copy patched firmware file to SYSTEM folder and change name back to HD200_UPG.SYS
  8. Unmount DAP, connect wall charger and power it ON. This should trigger firmware upgrade procedure which will copy our modified version into flash. When it is finished perform hard reset (small button on the botton left)
hd200_screen_dump-615a.png
  1. Download current build of the rockbox from hd200.
  2. Unpack the content of the archive to the top dir of the player (the same level as SYSTEM, FM, etc. directories)
  3. To start rockbox press PLAY for ~5s (as you did before to start DAP). If you want to boot original firmware press PLAY+REC. This will display small menu, select "Boot MPIO firmware" and hold PLAY for ~5s.

TODO

  1. Extensive testing of USB bridge mode (I made some changes to the way GL811 is used and I hadn't have filesystem corruption since than but more tests are needed)
  2. Callibrate battery indicator
  3. Keymaps need more work
  4. Use advanced functions of codec chip (ALC, NGAT, Adaptive bass mode)

Links

  1. Inside MPIO HD200
  2. Disassebly of MPIO origianal firmware
  3. Battery runtime

r31 - 02 Apr 2021 - 20:46:07 - UnknownUser


Parents: WebHome
Copyright © by the contributing authors.