Site hosted by Build your free website today!

Site Map

Navigate Software
Main Software Page
EZ-AV Tools for Unix

This Page

Lovely Counter

free hit counter
(Reset from about 10,000 in April 2005 by a crash)


Read this OR ELSE

FIRSTLY, this page is nothing to do with "Warez", or copyright infringement or any other naughty things. It's PURELY for making MP3 players like the one I bought work a bit better with Linux (and any other versions of Unix, presumably including Mac OSX). I am NOT redistributing any copyrighted materials on this page or other things that I do not have a right to.
SECONDLY, I am NOT affiliated with the EZ-AV company who make the player, and this project and the software I have produced is NOT endorsed by EZ-AV either. It is my own work made for free and distributed free-of-charge in the hope that it'll be useful. Because of this, you should NOT complain to them if it doesn't work for you or you don't understand how to use it!
THIRDLY, because I basically worked out the file formats by deduction, rather than having any official specifications, I can't guarantee that I have it worked out perfectly, although it appears to work so far. For that matter, I accept no responsibility for any damage done to your audio player due to the use of this software, although I don't currently know of any such risks; the software is provided as-is and without warranty of any kind.

Oh yes, and FOURTHLY, about the scope of this page+project: it's about the EZ-AV brand of Digital Audio Players (rather than any other brand with the same name), and it's for their use on Unix- ie, systems such as Linux, BSD and Mac OSX. If you only use Windows, this is of no use to you!! Windows users can use the software on the official CDs and downloads, anyway.


Just a bit of the story behind this stuff, you could probably skip a lot of it.

I wanted a good-quality MP3 (and primarily Ogg Vorbis) player for some months when I saw that one of the models of what I'd seen advertised as the "XEN EMP" player was available on clearance sale for about 40: further investigation showed that this particular one, the EMP-500 (it seems the full name may be something like "EZAV eNOM XEN EMP-500"; I think Korean companies must like giving products as many names as humanly possible) had originally been available for over 100, and not only had all the general features I wanted (high SNR, Ogg Vorbis support, LCD screen, external batteries), but also played video on the colour graphical LCD! As I've seen such offers disappear far too often, and I'd wanted to have a player for a forthcoming holiday (long plane journeys!), I jumped at it.

Of course, I happen to use Linux, and like most other computer products, this player does not explicitly support Linux. But I'd already figured out that it supported the UMS (USB Mass Storage) standard, and so it should be possible to simply copy music files to and from the player like I would with a USB flash drive. I was right about that at least, although I do tend to see odd error messages whenever I first plug it in (I should find out about these, although I've not seen any problems arise from them).

But what about the video support, which was one of the more compelling features? Well I already understood that the only videos it plays are in the manufacturer's (EZ-AV Co Ltd, of Korea) own proprietary "PFL" format, which obviously requires you to use the Windows software that they put on the bundled CD- as do a few other features the player has (At least, it has done so far...). Much googling and checking of the site's FAQs and forums provided basically no leads in terms of finding such Linuxy alternatives, although I didn't actually go as far as asking; I figured I'd see what I could manage for myself first.

Anyhow. I rather hoped the software in question would work under Wine, the Windows Emulator. Unfortunately it seemed not to be the case, at least with my somewhat old copy. Newer versions might work better, although I get the impression that much of the software expects you to have the player connected, and I doubt Wine would give the appropriate level of access to the player. However, the gadget had a sample file loaded on it, a Korean pop song with an accompanying video. The video file was quite big considering the screen is only 64x96 pixels (it's primarily a music player; video, pictures, text reading etc are nice extras really), but looked quite decent quality IMO. I loaded the PFL file onto my computer and had a look at it, and thought about the ways I might make a format specially for such a device.

Within the day (most of which I'd spent chatting, browsing etc) I managed to get a bit of a handle on the file format. An hour or two later I had a set of scripts that could display somewhat broken versions of individual frames. Next day (today as I write this) I fixed that so it extracts AFAICT proper individual frames, and went on to produce a script that can replace frames of the video with frames of your own making. I uploaded a copy of a so-edited version of the video to the player, and confirmed that yes, it works. YAY ME! Ahem.

NOTE! I bought the player to go on holiday with, and said holiday is next week; I won't be able to answer emails about this project until early March.


What this does
Ok, so what does this package so far consist of? Well first, what do the players support generally?
  • Video and pictures are on the EMP-500 and the EMP-600; I've seen a download of a version of the official video capture program for the EMP-400 series on the EZAV website, but I'd thought that didn't have a full colour graphical screen so I'm rather confused by that. Perhaps those versions give mono video or something? The "Pebble" devices have a 48x64 monochrome(?) screen, I get the impression they can show images.
  • Text display: The EMP-500 at least has a not-much-advertised function whereby plain ASCII text files placed in the /text directory of the player can be selected via the player's browser system thingy, whereupon screenfuls (12-char wide) are displayed sequentially. Control of this seems limited to waiting for the next page (rate is user-controllable), going directly to the next page, and rewinding to the very start of the file. Presumably much the same thing is supported in the other models, but they don't talk about it that much. They also refer to "TTS" (Text to Speech, which AFAICT is just a PC-side thing) and lyric support (where the words are synced to the music), which obviously aren't quite the same, but seem to be given more attention in the manual and the website.
  • "Media Sync": This AFAICT is the system whereby displayed text can be synchronised with the audio, eg for lyric support. The website also talks about the internet regarding this, but I don't know where that comes into it, perhaps it means it can use html text? It appears to be supported in most or all of the players.
There are various other functions too, but these are the ones that I can think of ATM. I must also point out that I don't know if those functions above vary in how they're implemented for each device, but I can imagine they would be- eg, my EMP-500 has 4096 colour display, but some others have only 3 colours+greyscale, so I wouldn't think that images/video for one would work on another.

Now, more to the point, what is supported by the tools here? Well not much so far, I've only just started! All there basically is, is some very limited code for working with video for the EMP-500. That code may or may not also work does not work in the current version for models such as the EMP-600 which has similar display capabilities, but they will be supported in the next release; I'd be surprised if it worked on the new Pebble or any of the older models though, which are quite different. I'd like to be able to support as many of the (EZ-AV) players as have video and/or image capability, but I can't really do it alone as I haven't got the time or the knowledge.

What specifically is supported for video on the EMP-500? Well I've got code that manages to extract separate frames out of the video file, either as a PPM file to stdout, or to display directly in a window; I also have another program that does the reverse- it takes an image (has to be very specific size), and a frame number, and replaces that frame of an existing video file with the image. You can, of course, reinsert images that you've already extracted, and they don't have to go back in the same place.

The software cannot yet:

  • Create new video files- I don't know if there's any special data in the headers apart from the model identifier. It doesn't look as though there is, but supposedly you can capture videos in the Windows software at either 5fps or 10fps, and so presumably the player needs to be able to tell these types apart, so this would seem the obvious place to put such info.[Addendum: I've found this out now, and can probably do this next release]
  • Insert video frames outside the duration of the video (eg, 3 minutes into a 2 minute video). I simply don't know whether it'll accept that or not, because again, I don't know if there's metadata such as the video duration encoded in the headers. If so, I've no idea what the player might make of a malformed file, although it might well not mind at all. [Addendum: I don't think any of this is a concern]
  • Do anything whatsoever with still image files- I've not got any, I don't know how different they are to video files, although I understand they're also "PFL" files. I've got a few examples now, and am pretty sure I know everything I need to, to be able to encode them for the next release. Meanwhile you should be able to at least view the things if you have them, by treating them like video files with 1 frame.
  • Convert other video formats straight to PFL (once video encoding in general is supported, this should be possible using external tools such as MPlayer etc).
Also, it's purely Command-Line only so far, but I can imagine it being wrapped with a GUI front-end some time.

Oh, and I suppose you want a screenshot or something, but being command-line based, you'll have to make do with a photo of my player with a frame I produced with the "ppmpat" program from the Netpbm package (which you NEED in order to use this! It isn't included!)

EMP-500 in its snug prophylactic case, displaying a squiggle I inserted into (a copy of) the video.

Oh yeah, and because of the way the text viewer function works, I'm mulling over whether or not to make something to format text files to work well with it- but that would just consist of the "fold" Unix command, and I'm not sure if it works out all that well anyway.

Ah, another potential function: I read in a few places about someone (same person?) on Linux having trouble ordering the playlist, which is apparently something that the Windows software can do. When I put things on the player, piecemeal, I couldn't help noticing that the order of the playlist was the order I put them on in, so perhaps it does it purely by timestamps. If so, Linux users could conceivably change the playlist order by just using the "touch" command in an appropriate way- although this would probably require you to do it on every single file there. A script OTOH might be able to work out whether it could get away with not touching some files, and it could do the whole thing with much better timing than a person- in that way, it could ensure that the timestamps are separated enough, but that the FAT on the flash device gets written in as few passes as possible (ideally, 1!) due to caching.


I wrote much of this in the Functionality box, because I've got things to do and I'm not paying attention. Basically, this is very very alpha, and can only do very basic things- but it does at least work for what it's supposed to do.

It uses "tcc", the Tiny C Compiler, to make the C programs into scripts, but this is fairly unnecessary. If you simply compile those programs and change the shell scripts to call the compiled versions, it should work just as well. I just did it that way because it was quicker for me whilst I'm working on it.

This package could be more complete if I got feedback from other EZAV EMP owners (eg, those with other models, or those who could use the Windows software). However, please DON'T send any attachments unless I agree to it, as I don't want my mailbox to burst and I don't want to take all day to download my email.

I've now fixed the bug (and another one) that I noticed in the first version when I got back from holiday. If you already got the first version, you should probably d/l the new one, unless you fixed the bugs yourself (they weren't too complicated). And if you were waiting for the bugfix release before downloading the package, then here it is!

As I got a lot more example files since the first release, I think I can tell enough about the file structure to be able to make further useful utilities when I get the time to do another release, so watch out for that.


This is a very alpha version, and the tools are command-line only. I've done some rudimentary documentation though, including usage examples, and fixed some obvious bugs that I noticed. It's distributed under the terms of the GNU Public Licence (version 2 or later).
Latest release is a bugfix version, as v0.0.1 didn't behave the way it was claimed to in the docs.

Current requirements:
  • Netpbm (there's a few versions, I have version 10.0, but I don't know if any others work as well. You probably have a version that works if you have any version of Unix).
  • "expr" and "dd", which I expect you have anyway
  • A C compiler, or "tcc". If you have tcc, you can use the tools as they are, otherwise you have to do a bit of editing and compiling, sorry. It was faster for me to code that way, and I haven't time to deal with this ATM.
  • To use the "" script, you need "xloadimage", or some suitable replacement (which you would have to change the script to use). If you don't have this, you can still use the other tools.
Good luck, and have fun!


Wednesday September 6th 2006:Woo! About 2 weeks ago now, I got an email from an EMP-600* owner, Ronald Delobel. He said that as it was, the images the sofware extracted from his PFL files looked wrong, and frames inserted into the PFL files with it didn't seem to show up. After I asked him for some example files, I found that sure enough, EMP-600 players use a slightly different format. But pretty soon, I'd decoded that, too :D Ronald confirmed that the prototype decoder I made worked great, and so did the encoder I made later. So when I make the next release (won't be yet), the EZ-AV Tools for Unix should properly support the EMP-600 (and clones)!

Ronald also contributed some improvements to the old code, and some new scripts. I also made a new script or two myself. Because the next release should be quite a step forward, it'll probably be version 0.1.0 instead of version 0.0.3. I won't be releasing yet because I have to tidy things up and reorganise bits of code better, etc. And also I've been quite busy lately with various things.

(*-Actually he said "T-budd tln-100", which he identified as an EMP-600 clone, which seems to be right)

Tuesday July 18th 2006:The project seems to get a reasonable number of hits, but I've not had any feedback on it at all. As I have a ton of different things to do, I probably won't do any more on this project for at least a while, unless someone emails me or something to say they want some improvement or have a useful contribution. OTOH, if you don't want anything but do use the package, I'd still be interested to hear that someone is using it and not just looking at the webpage. Note that this doesn't mean the project's abandoned at all, it's just resting!

Monday April 3rd 2006:Got around to doing the bugfix release at last, sorry it took so long. Also noticed and fixed other discrepancies. Added another useful example to the USAGE.txt doc. Also worked on the TODO file somewhat to reflect current plans, although I don't know when I'll have time to do those things. Meanwhile it does what it's currently supposed to do, even if you don't find it user-friendly. Am now about to try to register the project with

Tuesday March 7th 2006:Sorta back by now, yes, but not really awake to deal with this properly yet. OTOH, I've got several more sample files to work with, and had another look at the code I'd released. I realised it looks like when I changed it all for public release, I changed the file name/location used for the USAGE instructions, but NOT in the code itself; it therefore seems to still be using the perverse file location I'd set when I was starting it (the /dev/shm/ directory, which at least here points to a fairly large ramdrive, and is therefore quite useful for storing temporary files unlike my very crowded hard-drive). I'll hopefully fix that very soon, but not right now as I really don't have the mental energy. I just wanted to mention it.

Wednesday February 8th 2006:Ok, STILL not doing any more, but I'm mentioning here that when I went to upload some more files onto my EMP-500 today, Linux repeatedly failed to see any drive whenever I plugged it in. This occurred even across boots, and using either connector (plug or cable), and either USB port, and so on and so forth. I eventually got it to recognise it just now, but I've not got time to track down exactly what I did differently. All I can say ATM is, when I plug it in for the first time, it produces kernel messages along the lines of:

usb 1-1: Product: TCC720 MMC Adapter
usb 1-1: Manufacturer: TELECHIPSAPIC
usb 1-1: SerialNumber: 0678342404347484
usb 1-1: registering 1-1:1.0 (config #1, interface 0)
usb-storage 1-1:1.0: usb_probe_interface
usb-storage 1-1:1.0: usb_probe_interface - got id
scsi1 : SCSI emulation for USB Mass Storage devices
(Plus some other lines before that. Also note it says "scsi1" rather than "scsi0" because I have other actual SCSI devices on this machine) When it doesn't work, that is about as far as it goes, and when I unplug it and plug it back in again, all I get is messages along the lines of "uhci-hcd: suspend_hc" and "uhci-hcd: wakeup_hc" or similar. But when the device works, I get all the above plus:
  Vendor: NETMUSIC  Model: 2148721401200401  Rev: 1.10
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sdd: 501760 512-byte hdwr sectors (257 MB)
sdd: assuming Write Enabled
sdd: assuming drive cache: write through
SCSI error: host 1 id 0 lun 0 return code = 8000002
        Sense class 7, sense error 0, extended sense 0
 /dev/scsi/host1/bus0/target0/lun0: p1
Attached scsi removable disk sdd at scsi1, channel 0, id 0, lun 0
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
See? When it works, it detects actual drives, is the main thing. Anyhow, I don't know whether this is down to some quirk of the player, the cabling, my USB controller/interface, or the Linux drivers. My kernel is a bit old so maybe it is that. OTOH, my ordinary flash-drive never gives any problems at all, and still works ok (except today when I plugged it in after the EMP-500, even though it worked when I rebooted and plugged it in first, hmm). I'm just putting the info out before I forget and whilst I have the details fresh. Bye now, I have luggage to pack, etc etc, see previous news entry. *WAVE*

WednesdayMonday February 6th 2006: Got around to doing a few useful instructions for the software, fixed it to have one less (unusual) dependency, and archived and uploaded the thing at last. Now, I'm not doing any more on this damn thing for at least a month. *wave*

Friday February 3rd: Actually got around to uploading this page (it's been a long while since I did anything with the site in general). Will put the actual software on very soon hopefully!

Wednesday February 1st 2006: Fixed the frame size in the scripts, worked out the (probable) header size, and made script to replace frames of a video file. Wrote this page and took photo of (backwards, as it turned out!) one of my test images on the player.

Tuesday January 31st 2006: Received EMP-500 in mail, played about with it for a few hours when I should have been doing things to get ready for my holiday, worked out basics of video file format after failing to find out any (English) info about it online.

Sunday January 29th 2006: Saw offers for EMP-500 relatively cheap, thought it sounded quite good, looked up its specs and after deciding it was probably worth it, ordered one.

These pages created and maintained with MMSS (Make My Static Site)