MPS-110NF "Bazzix"/"Denver" music player on Linux
Some notes on the MPS-110NF music player, in particular when using it on Linux. The player is sold under the brand "Denver" or "Bazzix" in different places.
The manual for this player is very terse and printed in a tiny size; so here's what I figured out. (TL;DR: It plays OGG, it works well with Linux)
- Well-suited for listening during exercise
- Very lightweight
- Has a clip
- Very cheap
- Working audio formats are MP3 and WMA, but it also turns out to play OGG! :)
- Red LED turns off when the battery is full, but until then, it's hard to tell how full.
- File transfer is via FAT filesystem on the SD card (the player functions as micro SD card reader when plugged in)
- Press "+" and "-": change the volume
- Press "|<<" and ">>|": previous and next track
- Long press "|<<" and ">>|": switch on/off shuffle mode (green LED will blink)
Navigating between files can become unreliable when the file system is broken. The file system driver has a lower tolerance for that than Linux.
Managing music with Banshee
For Banshee to recognize the device as a player and to know the
supported filetypes, add the file
.is_audio_player to the
player's root directory, with the following content:
From there on, Banshee will recognize the device just fine. The
output_formats line will tell Banshee that the player
understands OGG files, so that it won't try to convert to MP3 first.
Managing music on the player — command line
You want the full control! You despise using GUI applications! You're up for a surprise!
The player plays files in the order in which they were created, not in the alphabetical order of the filenames.
Files easily end up in the wrong order, but it's luckily fixable by "touching" (renaming to a temporary name and back) all files in a directory in the right order.
I conveniently placed this script on the player:
#!/usr/bin/python2 """Recursively touches all file entries in alphabetical order. Usage: ./sortfiles.py /mnt/bazzix """ import os import sys def walk(basedir): for dirpath, dirnames, filenames in os.walk(basedir): touchfiles(dirpath, filenames) def touchfiles(basedir, files): for filename in sorted(files): tempname = "temp_%s" % filename full_filename = os.path.join(basedir, filename) full_tempname = os.path.join(basedir, tempname) # Touch the directory entry. print full_filename os.rename(full_filename, full_tempname) os.rename(full_tempname, full_filename) def main(args): if not args: sys.exit("Needs directory argument, e.g. /mnt/bazzix") walk(args) if __name__ == "__main__": main(sys.argv[1:])
Other people recommend to run the tool
fatsort on the
block device. This tool aims to solve exactly the same problem, but
fsck.vfat frequently complained about the results and I
ended up with broken file systems.