The K-Zone: An unofficial PMA430 FAQ

This document is not complete, but I'm putting it up anyway, because of the large number of people who are asking about the PMA430, and the lack of technical information available anywhere else.
      Please note that I'm not associated with Archos in any way, and the information in this document has not been supplied or confirmed by Archos.

Updated April 25th, 2005

Contents

Capabilities

Q. What can the PMA430 do?
A. The PMA430 plays audio and video, displays images, and provides PIM (calendar, contacts, to-do lists, etc) facilities. There is also a built-in Web browser and an e-mail client. Because it is a `real' computer, and not just a media player, the opportunities are there to extend its capabilities considerably with 3rd-party applications. The unit also supports Mophun games.

Q. What audio formats are supported?
A. MP3 and Microsoft WMA. 3rd-party software is available to play OGG and other formats. Very-low-bitrate MP3's don't work for me (32 kbits/sec or lower). High bit-rate and variable bit-rate work OK. Note that the PMA430 does not seem to support variable bit-rate MP3 streams within AVI video files (something to bear in mind when you're ripping DVDs).

Q. What video formats are supported?
A. Microsoft AVI file format, with MPEG4 video and MP3 audio. It's not clear at present whether third-party video players (e.g., mplayer) can be made to work with the PMA430. The uncertainty is in whether these players will support, or can be made to support, the PMA's built-in decode accelerator.

Q. What image formats are supported?
A. Microsoft BMP (yeuch!), GIF, PNG, and JPEG of any size. JPEGs with monochrome (1 bit-per-pixel) encoding don't seem to work, but these are quite unusual.

Q. Why is such a small range of video encoding formats supported?
A. I don't know, but I imagine that this is because in the jurisdiction where Archos is based, selling equipment that is intended to be used to violate intellectual property law is illegal. Archos markets its video units as video recorders, and emphasises their use for recording in real time. Archos does not promote, or provide much information about, playing video files other than those recorded on the device itself. You'll notice that the PMA only plays videos encoded in the same formats it records. If the PMA could play videos in other formats, Archos could not sustain the argument that the PMA was intended for recording in real time.
      If my assessment is correct (and I'm prepared to accept that it might not be), we shouldn't look to Archos to provide support for new video formats.

Q. Does the PMA support media streaming over a network?
A. There is no built-in support at all for media streaming. I have written a (rather crude) player for MP3 streams, which I use to play Shoutcast and Icecast radio stations. If you're interested, get it
here.

Q. What is `Mophun'?
A. Mophun is a sort of programming language for games. Mophun files are platform independent, so it should be possible to run Mophun games on the PMA430 that were developed on other platforms. Mophun was originally developed as a games platform for mobile phones. The PMA430 is also capable of playing games (and any other kind of software) developed for the Qtopia environment (see below), but these will not be platform-independent, and will therefore need to be converted.

Q. What is the difference between the PMA430, PMA400, AV500, and AV420?
A. PMA400 and AV500 were both previous names used by Archos to designate the PMA430. My unit has `PMA400' embossed on the front, but on Archos's Web site it is described as PMA430. The AV420 is a media player/recorder that supports the same media formats as the PMA430, but is not a true computer.

Q. Could the PMA430 substitute for a laptop/desktop computer?
A. That depends on what you want a computer for! It is easy enough to connect and external keyboard, mouse, and monitor to the PMA430, and it offers both wired and wireless network connectivity (see other questions in this document). So, in one sense, you could use it like a laptop/desktop computer. Moreover, it offers `proper' multitasking, so you can, for example, write a document while downloading a large file using the Web browser. On the other hand, the PMA430 has 48 Mb available RAM, and (probably) a 150 MHz CPU. This means that you aren't going to be able to run heavyweight applications on it, even if you can get them for the PMA's hardware and operating system. What's more, the Qtopia operating environment is really designed for small devices, and its limitations are very apparent when it's asked to do `big system' jobs.

Media management

Q. How can I transfer content to the PMA430?
A. When the USB device port is connected to a host computer, the PMA430 emulates an external disk drive. So long as your computer and operating system support USB drives, you should just be able to dump the content on the device. The device port is USB2 compatible, and very fast.
      You can also download content from the device itself using the built-in Opera web browser. Or, if you're brave, you can start the console utility and use the wget program at the command line.

Q. How is media organized on the PMA430?
A. However you like. Provided you don't mess about with the System directory (which contains the operating system), you can put media content wherever you like. As supplied, the PMA430 has top-level directories called Video, Photo, etc. You can create subdirectories under these, or create new top-level directories. Some of the built-in applications default to looking in the pre-defined directories so, although using different ones won't break the unit, it might make it slightly more fiddly to use. I believe that the MP3 library facilities in the PMA -- that organize tracks by title, album, etc. -- require there to be a directory called Music. However, many users switch these facilities off because they don't cope very well with huge media collections.

Q. Are filename extensions significant?
A. Yes. Because the PMA430 has a completely arbitrary file/directory structure, the unit relies on filename extensions to determine what to do when a file is selected to play. So it's a bad idea to give MP3 files a filename extension different from .mp3, and the same applies to the other file types supported.

Q. Can I rename the predefined directories?
A. It might be better not to -- the names of the top-level directories in particular probably should not be changed. Moreover, even changing the letter case is a bad idea. One user changed the name of /Documents/text to /Documents/Text and then found that the text editor didn't work any more. Linux, in general, is a fully case-sensitive operating system. However, it should be safe to add new directories, including top-level directories, and create new subdirectories at your discretion.

Q. Does the PMA430 support ID3 tags?
A. Yes, to the extent that you can list MP3 content by artist, album, etc. However, this feature is quite slow to use when there is a lot of installed content. In my opinion, it's better to structure your directories to group related content.

Q. How is the hard disk formatted?
A. It is a vfat (Windows 95) filesystem. Long filenames are therefore supported, but not symbolic links or file permissions. The lack of support for links and permissions is irrelevant for media storage, but is a problem for the (Linux) operating system. Consequently certain chunks of the disk are set aside for the operating system. These chunks appears as .img files when the PMA430 is mounted as an external drive. The filesystem seem by a host computer is, in consequence, completely different from the one that is is seen by the operating system from inside.

Maintenance and routine operations

Q. How do I back up the PMA430?
A. Simple answer: mount it as an external drive and copy the whole thing onto your PC/workstation. More complex answer: copy those files that contain data that would be difficult to re-create. All of the PIM data lives in the directory /pda on the unit, and that's probably what needs to be backed up most regularly. Even if you regularly synchronize the PIM data with a PC PIM app such as Qtopia Desktop, you might still want to back up the /pda directory, as it also contains configuration settings for the unit itself and all the applications. The file progfs.img in the /System directory contains all the installed 3rd-party applications, so you'll need to back that up unless you don't mind installing these again in the future. The file aimage.img contains the Archos firmware. It's probably worth taking a copy of that when you first get the unit, in case you do something daft like delete it, but it won't change unless you upgrade the firmware so it doesn't need regular backups.

Q. How do I synchronize the PIM data with my Windows application?
A. Read the manual! Sorry, I don't use Windows, so I don't know the answer.

Q. How do I synchronize the PIM data with Linux applications?
A. The only Linux application that I am aware of that will sychronize with the PMA430's PIM data is Trolltech's Qtopia Desktop. A Linux version of this software is available from the Trolltech web site. I've never tried synchronizing over USB, but I found that synchronizing over ethernet (wired or wireless) was a no-brainer. I just entered the IP number of the PMA430 in the `Settings' page, and hit the `Sync all' button.

Q. Where does the Linux version of Qtopia Desktop store its data?
A. In a hidden directory called .palmtopcenter in the user's home directory.

Q. How can I extend the battery life?
A. Turn the screen brightness right down; shorten the screen turn-off timeout; try to avoid doing USB uploads while on battery power; turn off the wireless network adapter while you're not using it.

Q. Is the battery removable?
A. Yes; spare batteries are available from a number of eBay traders, as well as direct from Archos.

Q. How much maintenance does the operating environment require?
A. None, really. Although the PMA430 is a real computer, it isn't as configurable as a desktop computer, so there's less to break. What's more, a reboot has essentially the effect of restoring the machine to factory settings -- only the most rudimentary configuration is persistent across reboots. While this makes it almost impossible to break the software so badly that a reboot won't fix it, it does have an adverse effect on configurability (see next question).

Q. How do I configure the application launcher icons, etc?
A. You can't. Well, that's not strictly true. At the Linux level you can find the directory containing the configuration settings for the launcher icons, and hack them around using a text editor. However, all these settings will be lost if you reboot or power down the unit.
      The only settings that can be changed are those made available from the `Settings' tab of the laucher. These are written to the hard disk, and so survive a reboot. Everything else is held in volatile memory (RAM), so will be cleared on reboot.
      This strange lack of configurability is the price we must pay for having a Linux-based system that is unbreakable. Because Linux is so flexible, without measures such as this it would be too easy to get into a situation that could not be recovered without wiping the hard disk completely and starting again.

Q. How do I switch on/off the built-in speaker?
A. Click the volume control icon in the taskbar, and check/uncheck the `Use speaker' box. Note that the speaker enables itself automatically whenever the alarm sounds, so you might not to disable it again for headphone use. Alternatively, press the up-arrow key on the three-button pad for two seconds.

Q. How do I lock the buttons and touchscreen?
A. Presss the `A' key on the three-button pad for two seconds. Repeat to unlock.

Q. Why does the unit not always get recognized as an external drive when I attach it to a host computer?
A. There are a number of reasons why this might be the case. First, although the USB protocols are designed to allow `hot plugging', in practice neither PC/workstation USB implementations, nor the Archos firmware, are entirely perfect in this respect. Putting a PC into `suspend' mode is particularly troublesome -- not all USB adapters wake up properly from a suspend. It may be necessary to reboot the PC. On my Linux machines, I just unload the USB drivers from the kernel and reload them; I don't know if there is an equivalent for Windows. Second, I've noticed that although the PMA will bring up the `USB sync' screen whenever the USB cable is plugged in, in some circumstances it won't actually do anything with the USB link. In particular, if a network operation is underway, the USB link won't be established. This is unlikely to be a problem with the built-in software (downloading a large file with Opera is the only thing I can think of), but if you're running third-party networking apps (e.g., a telnet server) you might have to shut them down before plugging the USB cable in.

Ripping and conversion

Q. What video formats does the PMA430 play?
A. Until somebody converts one of the common Linux media players to work on the PMA430, we are limited to the capabilities of the built-in player. This player works very well, but only plays MPEG4, Simple Profile. It only really works with the DIVX flavour of MPEG4, in my experience.

Q. What conversion software is supplied?
A. The PMA430 is supplied with a freeware Windows application called VirtualDub, and a simple wrapper to invoke VirtualDub with the proper parameters for the PMA430.

Q. How well does the supplied software work?
A. It works fine, so long as the source files are in Microsoft AVI format. By default it only does single-pass encoding, so the quality will not be optimal for a given file size. You can make it do multi-pass encoding, but you have to drive it yourself. Once you get to this stage, the supplied VirtualDub wrapper won't help you much, and you'd be better or using VirtualDub directly. The supplied software won't read MPEG2 files, which is unfortunate as this is a very common format for distributing video clips. It won't read video-CD format either.

Q. What other options are available?
A. For optimum quality and speed of encoding, I suggest using transcode under Linux, which is free. This software will convert almost anything, including video-CDs and obscure formats. The only problem with transcode is that it's not terribly easy to use, even when you get to know it, which takes ages.
      The basic transcode command you need for converting an MPEG file ripped from a PAL DVD, to play on the built-in screen, is:

transcode -w [kbits] -i inputfile.mpg -y divx4 -o outputfile.avi -B 42,50,8 
The argument `-B 42,50,8' tells transcode to shrink the image to a size which is 42*8 pixels in height and 50*8 pixels in width smaller than the original. This has the effect of converting the DVD's original 720x576 into 320x240 -- the size of the PMA screen. This peculiar command-line format is a consequence of the way that transcode's fast image size reduction technique works. For other screen sizes, you'll need to read the transcode manual and get out a calculator. If the source image is not the same aspect ratio is the PMA screen, you'll need to use additional command-line switches to insert black bars at the top and bottom, or left and right, of the image, or to crop a bit of the picture off. All of this is conceptually straightforward, but the arithmetic is fiddly.
      You'll probably need to fiddle around with the -w switch to set the bit-rate, until you find a setting that suits your needs. -w 500 gives file sizes of about 300 Mb/hour, if you leave the audio encoder settings at default, and as good a quality as needed on the built-in screen. There are any number of other settings to play around with as well -- keyframe interval, audio codec settings, and a whole heap of settings just for the MPEG4 encoder. If you turn the audio bit-rate down to 56 kbits/sec (-b 56) then the file size comes down to about 240 Mb/hour, but it sounds a bit tinny. This file size is the smallest I can get using transcode, without the quality become unacceptable on the built-in screen. For playing on a TV or monitor, you'd probably want to aim for file sizes 3-4 times as large.
      Multi-pass encoding is a bit of a pain with transcode. It does produce a significant improvement in quality for the same file size, but for watching on the built-in screen I've not found it to be worth the extra hassle.
      Under Windows, I've experimented with the free trial version of Dr.Divx, and believe it represents a good compromise between cost, ease of use, file size, and quality. It's trivial to use, even with multi-pass encoding. Unlike the supplied encoder software, Dr.Divx can read MPEG2 files, but it still won't read video-CD format, even though it is based on MPEG2. It isn't as configurable as transcode, nor does it handle anywhere near as many source formats, but I found that selecting `portable profile' produced perfectly satisfactory results without much further tweaking. The only gotcha with Dr.Divx is that you'll need to change the audio encoder to output constant bit-rate MP3, rather than the variable bit-rate MP3 which is its default (transcode defaults to CBR).
      In multi-pass mode, Dr.Divx can produce (just) watchable files smaller than transcode -- as low as 130 Mb/hour -- but that's by turning the video bitrate down to 300 kbits/sec, audio bitrate to 56 kbits/sec at 22 kHz, monoaural, reducing the keyframe interval, etc. In my experience, transcode tends to come apart when asked to produce very low bit-rate output, and the results aren't really watchable.
      With really low bit-rates, Dr.Divx and transcode produce different screen artefacts. transcode tends to show motion distortion; that is, the images tend to blur together when fast motion sequences are displayed. Dr.Divx, on the other hand, produces an effect which looks like partial frame skipping in the same conditions. Most likely these artefacts could be avoided, or at least reduced, with both applications with sufficient tweaking.
      If there were a version of Dr.Divx for Linux, I would consider buying a copy, because it makes it easier to cope with a wide range of different source sizes and aspect ratios. transcode requires too much arithmetic for this. In addition, Dr.Divx provides hassle-free multi-pass encoding, while transcode makes me mess about with log files and suchlike. As it is, Dr.Divx has two huge disadvantages. First, I'd have to buy a copy of Windows to run it under, which would work out quite expensive. Second, it can't convert a DVD directly. In any case, getting really tiny files is not absolutely necessary, as the USB2 interface makes it very fast to upload movies.
      Other recommendations I have had from Windows users include:

Q. How do I rip a DVD to PMA430 format?
A. The only Windows application that I've been told will rip a DVD directly to an MPEG4 AVI file is Artech's MPEG4 Direct Maker. Otherwise, you'll need to decrypt the VOB files using something like DVD Decrypter, then run an encoder like VirtualDub or Dr.Divx on the decrypted VOBs. There are a number of freeware and inexpensive Windows utilities to decrypt VOBs. I've not used any myself, so I can't comment on which is best. Under Linux, you can use transcode to rip a DVD directly to MPEG4 like this:

transcode -w 500 -i /dev/dvd -x dvd -T NN,-1 -y divx4 -o outputfile.avi -B 42,50,8 
where NN is the title number of the DVD title you want to convert. Again, you'll need to experiment with the -w switch to get a size/quality compromise that suits you, and the `-B 42,50,8' switch only works for converting PAL DVD to built-in screen size.

Q. How does recording video through the video input compare with ripping a DVD?
A. If you intend to watch video only on the built-in screen, the quality you'll get by recording through the video input is, in practice, as good as you'll get from ripping the DVD directly. In fact, unless you're showing video on a large-screen TV or video projector, the same is true for the external video output as well. What's more, unless you have a liquid-cooled supercomputer, recording from the video input is quicker than ripping a DVD with a PC, particularly if you are doing multi-pass encoding.
      There are two problems with using the video input. First, the PMA430 will cheerfully record a blank screen until its disk space runs out, so you'll have to set up a timer recording if you aren't going to be there to switch it off. Second, the PMA430 detects the MacroVision copy-protection signal on the video input, and refuses to play back the recording other than on the built-in screen. This is a major irritation if, for example, you wanted to watch a movie you recorded on the PMA430 on a hotel TV, or on a friend's TV, or even on a monitor in a different room of your own house. So, in practice, you're most likely better off ripping DVDs to MPEG4 format using a computer.

3rd-party applications

Q. What 3rd-party applications are officially provided/supported?
A. At the time of writing, none, except the Opera web browser supplied with the unit.

Q. What 3rd-party applications stand a chance of working?
A. In principle, the PMA430 is code-compatible with the Sharp Zaurus range, so most Zaurus applications ought to be good candidates. However, there are a number of problems with running Zaurus applications on the PMA430.

However, some Zaurus apps actually work perfectly on the PMA430, especially those designed for the later Zaurus models like the C700. I was pleased to find that the JustReader e-book reader installed perfectly and worked first time. In practice, most Zaurus applications need some changes to their configuration files after installation, and some need to be unpacked and repacked to suit the PMA's different file layout.
      I suspect that suppliers of commericial Zaurus applications, like TheKompany, and maintainers of open-source Zaurus appapplication, will have little difficulty converting their applications to work with the PMA430 [Update -- TheKompany has just released a PMA430 version of it's e-mail client, tkcMail]. However, I envisage certain difficulties getting proper integration with the PMA430's operating environment. In particular, there is no way for a 3rd-party application to register support for new file types (because the file types database is restored to factory defaults on reboot), so you won't be able to lauch 3rd-party applications using the built-in file browser, for example.
      For some popular Zaurus applications which I have converted to suit the PMA430, and which I am reasonably sure work properly,
see here.

Q. Why don't third-party audio applications work properly?
A. Most audio applications that work on the Sharp Zaurus fail to play properly on the PMA. The reason for this is that, for reasons I don't understand, when an application opens the audio device driver for writing, the driver does not default to sensible buffering parameters. This means that you'll get jerky and erratic playback. In addition, because of a change in the Linux OSS audio API since the Zaurus days, some application play at half-speed (a bit like a 45-rpm record played on 33 rpm). No change in configuration will fix these applications -- code changes are necessary, sometimes quite extensive. See the `Programming' section below for more details.

Q. Is there an e-book reader that works on the PMA430?
A. Try JustReader -- although initially a Zaurus application, it seems to work fine on the PMA. JustReader supports plain text, HTML, and (I think) Plucker format. HTML and plain text can be compressed using gzip and, so long as the resulting files end in .gz, JustReader will uncompress them internally. Using gzip compression reduces file sizes by a factor of 2-3. gzip is very big in the Unix world, but virtually unknown by Windows users. All the same, uou should be able to get an implementation of gzip for Windows easily enough.

Hardware

Q. What is the CPU?
A. Texas Instruments OMAP5910 CPU. This chip supports the ARM instruction set, and has most of the peripheral dedvices (e.g., USB) integrated. The clock speed is undocumented, but TI recommends 150MHz.

Q. How much RAM?
A. 64 Mb, but only 48 Mb is available to the operating system at runtime. Presumably the rest is used for the kernel/root filesystem. [Update -- with the latest firmware, the OS now reports 64 Mb available, rather than 48 Mb].

Q. What is the hard disk capacity? How much is available?
A. The total disk size is 30 Gb. About 200 Mb is used for the OS. As supplied, a lot more of the disk is taken up by manuals, PC software, and instructional videos, but you can copy this stuff to a PC and then delete it.

Q. What is the screen size/resolution?
A. This is a tricky question. The built-in LCD screen is 3.5 inches along the diagonal, and has a fixed resolution of 320x240 pixels. However, the video overlay and image scaler -- which are used by the built-in media player and photo viewer -- have variable resolution up to 640x480. You can't see this additional resolution on the built-in screen, but you can use it with an external monitor. In practice, the video overlay resolution is adjusted in software according to the video norm (PAL/NTSC) and media resolution, and will normally be slightly smaller than 640x480.
      Ordinary Qtopia applications cannot use the 640x480 video overlay, but you can write or adapt applications to do so, using the Archos multimedia API (see below).

Q. What is the screen colour depth?
A. This is another tricky question. Ordinary Qtopia applications can use only an 8 bits-per-pixel screen layer, giving a possible 256 colours on screen at any one time. However, the video overlay provides, in principle, 24 bits per pixel -- although colour information is shared between pixels, so the `true' colour depth is somewhere between 16 bits (approx 65,000 colours) and 24 bits (approx 16 million colours). The overlay is accessible through the Archos multimedia API, and this issue is discussed in more detail in the `multimedia SDK' section.

Q. What external interfaces are there?
A. USB host port (for connecting keyboard, etc), USB device port (for connecting the unit to a host for upload/download), composite video in/out, stereo audio in/out, S-video in (but no out), wireless network adapter, infrared transmitted and receiver. There is no external PCMCIA slot, nor an external memory card slot. The aperture in the case that housed the memory card slot on the AV420 is blanked off on the PMA430.

Q. Is there any non-volatile RAM?
A. There does not appear to be. With a built-in hard disk, it is of doubtful value.

Q. What about bluetooth?
A. There is no built-in bluetooth adapter. However, there is a full driver stack for supporting a USB bluetooth dongle. In principle, any standards-compliant USB bluetooth dongle should work if you plug it into the PMA's USB host port. The problem is that many USB bluetooth gadgets claim to be standards-compliant but, in reality, require firmware to be downloaded using a Windows-only downloader. So they are only standards-compliant if you're running on Windows, which is almost a contradiction in terms. Anyway, if you can get hold of a good USB bluetooth dongle, it should work, in that there is driver support.
      This is all very well but -- so far as I can tell -- none of the PMA's built-in applications are bluetooth-capable. So I'm not sure what you'd do with your bluetooth adapter even if the PMA supported it. In due course we might see 3rd-party application with bluetooth capabilities, but I wouldn't hold your breath.

Q. Can you connect an external hard drive/CDROM?
A. It would appear to be possible to connect an external USB disk drive or CDROM. Although I've not tried it, all the drivers are in place.

Q. What about firewire?
A. There's no hardware or drivers, so probably not :).

Q. Which external keyboards are supported?
A. Any USB keyboard can be connected to the USB host port, using the adapter provide with the PMA430 (the adapter is necessary because the PMA430's host port is a miniature USB socket, while USB keyboards tend to have full-sized plugs). On most USB keyboards, the F2, F3, and F4 keys take on the same functions as the three-button pad on the PMA itself, while the arrow keys, enter, and escape mirror the six-button pad.

Q. What about an external mouse?
A. Yes, there are drivers for a standard USB mouse, and also for a number of digitising tablets!

Q. How do I make Qtopia (user interface) recognize an external mouse?
A. In the console, execute the following command (note -- case sensitive)

qcop 'QPE/System' 'setMouseProto(QString)' 'IntelliMouse:/dev/input/mice'
To switch back to the touchscreen:
qcop 'QPE/System' 'setMouseProto(QString)' 'AVPanel'

Networking

Q. What networking options are available?
A. Built-in wireless ethernet (11 mbits/sec); USB-ethernet converter; IP over USB (wired); dialup over infra-red (iRDA) link; probably others as well.

Q. What is the range of the wireless ethernet?
A. About 10 metres in air with a good quality access point. I have heard reports of 50 metres out-of-doors. In my house, which is tall and thin, the wireless range will just work from the ground floor to the attic, but it's not very fast. The range will almost certainly never be as good as that which can be achieved by something that has an external antenna. I've asked Archos why they don't supply an external antenna, or a place to connect one, and it appears that the device is so crowded inside that there isn't space to run the connections from the RF receiver to the outside of the case!

Q. Does the network adapter enable itself automatically when using a network-aware application?
A. Not as far as I can tell. You have to switch the network adapter on using the network applet in the taskbar. I suspect that this is because the PMA430 supports multiple network interfaces, and it doesn't want to guess which one to use.

Q. What about IEE802.11g (fast wireless ethernet)?
A. Hmmm... probably not; at least, not yet. You could plug in a USB wireless dongle, but I doubt that drivers would be included. Few of these devices have Linux drivers even for desktop Linux versions. What you could do is connect the PMA to a (wired) ethernet-to-wireless media converter (like the ones you can buy for games consoles), via a USB-ethernet converter (see below).

Q. How does the PMA430 support wired ethernet?
A. There is no built-in ethernet port. However, you can connect a wired ethernet dongle to the USB host port. Archos supply a suitable dongle, but it's quite expensive. Most of these devices are based on the RealTek RTL8150 chip, and there is a driver for this provided with the PMA430. You can get a suitable device from eBay for about $5. I don't know what other devices, apart from those based on the RealTek chip, have driver support.

Q. Does the PMA430 support auto-configuration of IP parameters?
A. Well, it supports DHCP so, to that extent, yes it does. It also supports autoconfiguration with PPP over dial-up connections. However, it's a bit of a drag to get the IP number once a connection is established, and you'll need the IP number if your want to sync PIM data over the network. So you might want to define a network connection with fixed IP parameters if your environment allows for this.

Q. How does IP over USB work?
A. IP over USB is a point-to-point IP connection between two devices. If you want to establish a private network connection between the PMA430 and a PC/workstation, you can use IP over USB to achieve this over the ordinary USB connection. However, there are a number of problems with this. First, not all PC operating systems support IP over USB, and it tends to be fiddly to configure even on those that do. Second, you have to start the connection on the PMA430 and then hurriedly plug the USB cable in and then start the PC end. If you plug the USB cable in first, the PMA430 automatically switches to `USB drive' mode. Since you can get a USB-ethernet dongle for $5, it's hard to see why IP over USB would be much use on the PMA430 and I, for one, don't use it routinely.

Q. What is involved in getting dial-up to work?
A. So far as I can tell, the PMA only supports dial-up over infra-red. In principle, dial-up over serial should work via a USB-serial converter, but (a) there is no option for this in the network configuration application, and (b) there do not appear to be any drivers installed for USB-serial converters. So, in short, you're going to need an infra-red modem, e.g., a cellphone. I've tried the dial-up networking with my Nokia 6310i, and it worked fine. The trick with this phone is that you must enable the IR receiver immediately before trying to establish a connection. The receiver switches off without warning if it thinks the phone is idle. For what it's worth, my Nokia is on UK Vodafone, and to get a GPRS connection via dial-up I enter the phone number `*99#'. This only works if you have a dial-up GPRS subscription; if you don't, you'll have to use an ISP telephone number. If you use GPRS, you'll have to use the GPRS provider's SMTP server to route outgoing e-mail, even if you use an ISP's POP/IMAP for incoming mail. This is because most ISPs either reject SMTP traffic from IP numbers other than their own, or enforce SMTP authentication (which is not supported -- see below). For UK Vodafone, the smtp server is send.vodafone.net.

Q. What is the Web browser?
A. Opera 6. It's a perfectly serviceable browser and, with a wired ethernet connection, works surprisingly quickly. With a wireless connection the limiting factor is likely to be the network speed in a lot of cases.

Q. What are the capabilities of the e-mail client?
A. The built-in client supports plaintext (that is, unencrypted) POP, IMAP, and SMTP. It allows multiple accounts, and outgoing and incoming server can be different in each account. There is no support for authenticated SMTP, either plaintext or encrypted. This is rather unfortunate, because ISPs are increasingly requiring mail clients to authenticate before sending mail -- no ISP wants to be turned into a spam relay. I've been told that TheKompany is working on a more sophisticated mail client for the PMA [update -- just released :)].

Q. What about telnet, FTP, etc?
A. There is no built-in support for any of these, either clients or servers, except what is available in Opera. However, I have compiled some standard Linux networking apps using an ARM cross-compiler (see below), and they work fine. Oddly enough, the PMA430 is configured to accept incoming telnet connections on port 23, but there is no telnet server available to handle the connection. This is very odd -- I can only imagine that at some point in the past the PMA430 was intended to have a telnet server, perhaps for debugging. [Update -- in the latest firmware, this `feature' has been removed]

Operating system

Q. Is it really Linux?
A. Yes. It is a full Linux OS, even including an implementation of vi

Q. Which Linux distribution is it?
A. Undocumented. It is very similar to Lineo Embedix, as used in the Sharp Zaurus range of PDAs. Some Zaurus applications install and run without modifications.

Q. What is the kernel version?
A. 2.4.19. It's a reasonably complete build, even including kernel modules to support hardware that isn't included with the base product.

Q. What standard Unix utilities are provided?
A. The basic Unix commands -- cp, rm, etc. -- are provided; these are supplied by the BusyBox project. With BusyBox, all the standard commands are provided in one executable, to save space. There is also any implementation of rsync, which can be used to synchronize whole filesystem with a remote rsync server (e.g., on a PC).

Q. What is the user interface?
A. Qtopia (v1.7), provided by Trolltech. Qtopia is a user interface and program manager derived from Trolltech's `Qt' graphical user interface library. Qt is widely used by Linux developers to provide a graphical interface for their applications, and it's not too difficult to convert desktop Qt applications to run on Qtopia, provided they aren't too demanding of resources. For example, there is a Qtopia version of the Konqueror web browser, which was developed using Qt for desktop machines.
      However, Qtopia is not an extension of the X11 windowing system. Linux X11 applications will not run under Qtopia, even if they are compiled appropriately and supplied with all the necessary libraries. In a sense this is a shame, since there are thousands upon thousands of X11 applications, none of which will be easy to make work on the PMA430. In another sense, X11 was never intended to run in the resource-constrained environment of a PDA, and Qtopia will be much faster. You probably could run XFree86 -- the standard Linux implementation of X11 -- on the PMA430 with a bit of fiddling about. However, all the built-in applications, including the PIM applications and the media players, are Qtopia applications, so you might be shooting yourself in the foot by doing this.

Q. How is the filesystem organized?
A. In a very convoluted way, because there are two severe constraints on the filesystem implementation. First, the unit as a whole must look like a DOS/windows disk when it is emulating a USB hard drive. Otherwise it wouldn't work with Windows systems. Second, the basic Linux filesystem must be read-only, so the user can't break it too easily.
      To satisfy these constraints, the Linux root filesystem, along with the kernel, is found in single, large file called aimage.img within the Windows filesystem. The bootloader knows how to locate this file, load the whole thing into memory somewhere, and boot the kernel, with the image file mounted read-only as the root directory. During the boot process, the Linux system init script mounts the whole hard disk on the /media directory (which means, of course, that the root filesystem includes itself recursively, but it's as well not to think too hard about that).
      Then the init script locates the file progfs.img which now appears within the /media/System directory, and mounts it as a loopback file on the directory /progfs. This is where the package manager will install 3rd-party applications (and also where the Opera browser lives). Then the init script mounts a RAMdisk on /opt/Qtopia, and creates a whole heap of symbolic links from within this directory to read-only locations. It also symlinks all the configuration directories within /progfs/opt/Qtopia, which is how 3rd party applications remain visible in the launcher after a reboot, even though the launcher configuration (in /opt/Qtopia/apps) is volatile.
      So, when mounted as an exernal drive, the filesystem looks as follows:

Hard disk (vfat format)
  Video/
  Music/
  Photo/
  pda/ (all the PIM files and system config goes here)
  System/aimage.img --> mounts on / under Linux
  System/progfs.img --> mounts on /progfs under Linux 
But under Linux, it looks like this:
/ (read-only mount of /System/aimage.img)
  etc/ (ramdisk, lots of links to...)
  etc.rom/
  usr/...
  opt/Qtopia/ --> (ramdisk, lots of links to...)
  opt/Qtopia.rom/ (ramdisk)
  tmp/ --> (ramdisk)
  var/ --> (ramdisk)
  media/ --> (whole hard disk, vfat)
    Video/
    Music/
    Photo/
    System/ 
  pda/ (all the PIM files and system config goes here)
  progfs/ (read-write mount of /System/progfs.img) 
    opt/
      Qtopia/
      QtPalmtop/
      ...

Q. What is the Qtopia `document model'?
A. Qtopia applications are expected not to allow the user access to the underlying Linux filesystem. Instead, applications that handle files are expected to read and write from a specific Documents directory, in which files are organized by MIME type. The advantage of this model is that the Qtopia Desktop software understands it, so there a very simple mechanism to upload and download files between the PMA430 and the host computer.
      The disadvantage -- and it is a severe one -- is that the Documents directory cannot be further sub-divided so, for example, all plain text files end up in the same directory. On a device that has 30Gb of storage, it has to be envisaged that many users will end up with thousands of files of the same type. For example, I use my PMA as an e-book reader, and I have many thousands of files in plain text and PDF formats. However, I can't put these files in the Documents directory, because the user interface just falls apart. It tries to display icons for each of these thousands of files in the launcher, which takes hours (or would take hours, if I handn't rebooted it first).
      Now, the Archos built-in media applications (video player, etc) specifically don't use the Documents area, for exactly this reason; in fact, the only supplied applications that do use it are the software package installer, the PDF viewer, and the text editor. These applications only show the Documents area. I find this deeply, profoundly irritating. I have thousands of documents in PDF format, and the only way I can keep them on the PMA430 is to store them outside the Documents area and copy them in when required using the file browser.
      The Qtopia document model made perfect sense on devices with less than a few hundred megabytes of non-volatile storage. However, beyond that amount it is completely inappropriate. It makes absolutely no sense for Archos to supply the PMA430 configured such that some of the built-in applications are constrained to use the Documents area, while others are not.
      Although the Qtopia document model exists for a sound reason -- to insulate inexperienced users from the intracies of a Unix filesystem -- in practice, even software developed for the Sharp Zaurus rarely supported the Qtopia document model.

Software development

Q. Is there an `official' SDK? How much does it cost?
A. Archos has published an SDK for the multimedia elements of the PMA (which has its own section in this FAQ). It is free-of-charge for non-commercial use. For ordinary Qtopia development -- that is, development not specifically targeting the PMA's hardware -- Archos seems to recommend the Embedix ARM port of gcc with it's supporting libraries, and the Trolltech Qtopia/QT-embedded SDK. See next question.

Q. Where can I get a C/C++ cross-compiler?
A. It's worth bearing in mind that anything which produces executables which run properly on the Sharp Zaurus will almost certainly work for PMA430 development as well. The Lineo ARM port of GNU C/C++/glibc for Embedix produces code that works fine on the PMA430. This is available for Linux and Windows, but I've only used the Linux version. You could use other ARM cross-compilers, but you'd still be faced with the problem of obtained Embedix-specific headers and libraries. I don't believe there is an `official' source of the Embedix SDK any more. If you do a Google search for `embedix zaurus cross-arm' you'll probably turn up a few likely locations. It is now also available from the Archos website.
      Embedix was originally produced by Lineo, which is now part of Metrowerks. Metrowerks continues to produce a Zaurus development tool as part of its Code Warrior product. I've not used it, so I don't want to comment on it.

Q. What do I need to create Qtopia applications?
A. You can get the Qtopia SDK from the
Trolltech web site. This is commercial, but no charge is payable for using it to develop open-source applications. The SDK comes with heaps of documentation.

Q. Is there a Java JVM that works on the PMA430?
A. With a bit of effort, I've been able to get the Sun J2ME Personal Profile JVM to sort-of work. I should point out that Emertec's Jeode JVM, which ships with the Zaurus, doesn't seem to work at all on the PMA430. But then, to be fair, this version of Jeode is extremely old. No matter what I do, it just segfaults. The Sun JVM is available from here. Because the distribtued ipk file is structured for the original Sharp Zaurus firmware, and assumes /home to be writeable, you'll need to unpack the ipk and repack it. Zaurus ipk files are just gzip'd tarballs inside gzip'd tarballs, and if you unpack this one you'll find a lib directory and a bin directory. In the bin directory is the single executable: cvm. You'll also need to install the Zaurus floating point library libfloat.so (get this from OpenZaurus, or do a Google search for `libfloat zaurus').
      You'll just need to put the cvm executable, and the various libraries, on the PMA430 in some handy place (somewhere under the /media directory will do -- at least this ensures that it won't disappear when you reboot). Then, to run the JVM, set the environment variable LD_LIBRARY_PATH to include the lib directory that contains the stuff you unpacked from the ipk file, the directory that contains libfloat.so, and also /opt/Qtopia/lib. Then run the JVM like this:

/full/path/to/bin/cvm -classpath ... classname
The cvm command line is much like the ordinary java command line as it is implemented in the Unux and Windows JDKs.
      Before you get too carried away, I should point out that this only sort-of works. Command-line applications work fine. The problem is that if you write a graphical application using AWT, the main window does not align properly on the screen, and it loses the title bar. Now, I tried the CVM implementation for Symbian on my P800 as well, and that does the same thing. So I don't think it's a defect in the Zaurus version, rather that there is some particular way you have to set the main window size or position to make it work properly. Unfortunately, if that is the case, there is no documentation to that effect. Anyway, you can write AWT code that works; it just doesn't sit in the right place on the screen.
      It's worth bearing in mind that there's absolutely no point developing distributable applications for the PMA430 using Java, unless Sun or somebody else produces a JVM that specifically targets the PMA430. We can't expect end-users to go to the lengths that are currently required to install a JVM. Since Sun's CVM implementation hasn't been updated since 2002, I can't imagine there's a great deal of enthusiasm for creating a PMA430 version within Sun.

Q. What about Perl?
A. There is a complete implementation of Perl 5.8.0 for the Zaurus. which works on the PMA430 as well. There's no specific distribution site, so a bit of Googling will be in order. Watch out -- it's 30 Mb. You'll need to unpack it and manually install all the bits under /media, and adjust LD_LIBRARY_PATH to get it to work.

Q. How do I play sampled audio in a C/C++ program
A. As with any Linux application that uses the OSS audio API, the basic procedure is to open /dev/dsp for writing, configure the sample rate, etc., using ioctl() calls, and then write to the filehandle in blocks. This procedure is well documented in the OSS programmer's manual. However, in practice there's much more to it than this.
      The main problems with audio programming for the PMA are that (a) the audio buffer size is very small (I think 8 kB -- in any event it has resisted any efforts of mine to extend it beyond 8 kB), and (b) the audio driver's default fragment size (I think 256 bytes) is too small to get smooth playback.
      As for the fragment size problem, I have obtained the best results by setting the fragment size to 4096 bytes, and then writing samples to the driver in 4096-byte chunks. Here's the code you need to set the fragment size:

int sfs = 14; // 2^14 = 4096 bytes
int frags = 0x7fff0000 | sfs; // 0x7FFF means `as many as possible'
ioctl(audio, SNDCTL_DSP_SETFRAGMENT, &frags) 
In practice, the 8 kB buffer means that you get two fragments of 4096 bytes, which seems to work OK.
      As for the small buffer size in general, this is a harder problem to fix. At 44,100 samples per second, the buffer will empty in a matter of milliseconds, so it's vital to ensure that there is a constant flow of data into the buffer. Owing to the low CPU speed of the PMA, in practice it is necessary for the process that is feeding the buffer to be a different process from the one that is gathering or generating the audio samples. These processes can communicate using, for example, shared memory or pipes -- it doesn't seem to make a lot of difference which techique is used.

Internationalization

Q. What languages does the PMA430 support?
A. This is a tricky question, because it can mean so many different things. In general, the PMA430 has full support for English, German, Spanish, French, and Italian. What I mean by `full support' is that, not only can all the characters in those languages be entered and displayed, the user interface has been translated into those languages. For information about keyboard layouts, character sets, etc., see below.

Q. What character sets does the PMA430 support?
A. Qtopia is at least partially unicode-aware. This means that text entered in the built-in applications is managed and stored in a multi-byte format, so that a large number of characters can be represented. The unicode standard currently defines over 15,000 different symbols -- enough for most of the world's languages.
      However, having the ability to store a large number of characters is not much use unless you have also an ability to enter and display them (more on this below).
      Qtopia's unicode-compliance is not perfect. I have noticed, for example, that although the Contacts application can store and display Japanese names in kanji, the characters are not rendered correctly in dialog boxes. It's also worth bearing in mind that, if you synchronize the PMA with a PC or workstation, there's no guarantee that the software you use to synchronize, or to manage the data, will be unicode-aware, or that you have the fonts necessary to display the characters. Qtopia Desktop is unicode-aware, provided your platform has full unicode fonts. I couldn't comment on any other software.

Q. What must I do to get the PMA430 applications to display non-western characters properly?
A. So far as I know, the only built-in font that supports a relatively full set of non-western characters is unifont. You can select this from the `Appearance' tab in the launcher. Characters for which there is no font symbol display as boxes.

Q. How do I enter non-English (but west-European) text?
A. If you are writing extensively in French, German, Spanish, or Italian, or a language with similar characters, language, you might wish to consider setting the default language of the PMA accordinging. This will change the layout of the virtual keyboard, and expose more of the characters used by those languages. Otherwise, if you just want a few non-English characters, you could use the unikeyboard `input method', as described below.

Q. How do I enter non-western text?
A. This is quite tricky. It is mildy irritating that the PMA supports non-western characters for display and data storage, but provides absolutely no way to enter them. What is required for stylus-based text entry is an `input method' (Qtopia jargon) which supports the language(s) you want to use. If you only use a few non-western characters occasionally, you might get by with unikeyboard (see below). Otherwise, you could try one of the numerous Zaurus input methods that are available. You'll need to overcome the problem that there is no way to install a new input method through the graphical user interface but, apart from that, Zaurus input methods should work OK.

Q. What is unikeyboard?
A. unikeyboard is the lowest-common-denominator of input methods -- it allows the user to select any character in the unicode character set by selecting it from a (very long) list. It is OK for very occasional use, if you just need one or two non-western characters. Unless you have exceptional eyesight, it's very difficult to enter kanji, but it's not impossible. unikeyboard is also useful for entering occasional western-European characters that don't appear on the UK/US keyboard layout. For some reason, unikeyboard is not provided with the PMA, although it is part of the standard Qtopia distribution. I have compiled it and made it available, along with installation instructions, on my
PMA conversions page.

Q. Can I use a non-US-layout USB keyboard?
A. Sure, if you don't mind guessing which keys to hit. So far as I know, the US layout is hard-coded into Qtopia somewhere, and there doesn't seem to be any way to change it. If you find a way, do please let me know. To be fair, the PMA430 is probably the first Qtopia device even to support an external keyboard, so it's not surprising that layout support is restricted at present.

Troubleshooting

Q. Video plays fine on the internal screen, but on an external monitor it only plays for a few seconds and then goes blank. Why?
A. This is how the PMA handles recordings from sources that are copy-protected using MacroVision. Most likely you copied a copy-protected DVD using the PMA's video input. The solution is to rip the DVD using a computer instead, or to filter out the MacroVision signal using one of the various filter boxes available (try eBay). Obviously, you should only do this if it would be lawful :)

Q. Why does the touchscreen stop working after waking the PMA up from sleep mode?
A. I don't know, but this problem only seems to afflict units with the earliest firmware. A firmware upgrade (from the Archos website) should fix it.

Q. Why can't the PMA's wireless network adapter connect to my access point?
A. The most obvious answer is: because it's out of range. The PMA has no external antenna, so its wireless range is not as great as that of a laptop PC, for example. However, even if the AP is in range, people often experience problems, especially with WEP-encrypted networks. I have a suspicion that the problem with WEP lies partly in the way APs and devices convert textual keys (passwords) into numbers. At the protocol level, a WEP key must be either a 40-bit binary number or a 128-bit binary number. These bit sizes can be represented as either 10 or 26 hexadecimal digits, or 5 or 13 textual characters. The problem is that the key size must be exactly 40 or exactly 128 bits, so if the key size you enter in the AP or the device is not of the right size, it has to be padded. I'm not convinced that different products all pad the same way. So, for example, if you enter `fred' as the WEP key in your AP, and the selected key size is 128 bits, your four characters have to be padded to 13 characters. The AP might do this by padding with spaces at the beginning, or at the end, or repeating the characters. Provided all your wireless equipment comes from the same vendor, you probably won't have a problem, because all the equipment will pad the key the same way. However, there's no guarantee that the PMA will follow the same convention.
      In short, the best way that I have found to ensure that wireless equipment from different vendors works properly together is to use a key that fills the bit size exactly. So, because I'm using 128-bit keys, I would always enter a 26-digit hexadecimal number on all the equipment in the building.
      I appreciate that this is of no help if the access point is beyond your control -- in an airport or something. But if it doesn't work there, the problem does not necessarily lie with the PMA, but with the lack of standardization in this area within the networking industry.

Q. Why can't I connect to a network using my USB ethernet adapter?
A. The PMA only has drivers for a limited range of USB ethernet adapters. Most obviously, it supports the device that Archos sells; it should support other devices based on the RealTek RTL8150 chip; for other devices, your mileage may vary. The problem is that it can be very difficult to tell, before making a purchase, what chip your prospective device is based on.

Q. My PMA gets warm in use -- is this normal?
A. I don't know if it's normal, but it's undoubtedly typical. You should expect it to get warm to the touch, especially with the wireless network adapter in use.

Q. Why doesn't the supplied infra-red remote control seem to work?
A. Perhaps because the IR sensor on top of the unit is not for remote control, but for networking. The receiver for the remote control is on the cradle, so you can't use the remote control unless the PMA is plugged into the cradle.

Archos multimedia SDK

Q. Why do I get the following error messages when I try to link applications that use the Archos SDK:
/opt/PMA400//lib/libcsl.so: undefined reference to 
    `QExclusiveLock::unlock(QExclusiveLock::Type)'
A. Because, I presume, Archos did not produce libcsl.so by linking against the Trolltech versions of the Qt-embedded libraries, but against their versions of these libraries. QExclusiveLock is, so far as I can tell, not part of Qt-embedded at all, and I've no clue what it does. In any event, the solution to the problem is simple -- rather than linking your application against the libqte.so from Trolltech, copy this file from the PMA itself (it's probably in /opt/Qtopia/lib and link against that instead.

Q. How do I write directly to the video framebuffer?
A. There are two basic approaches: using the ordinary Linux framebuffer interface (at /dev/fb0), and using the Archos framebuffer API. The former is probably preferable if you are porting existing Linux applications, but (so far as I can tell) you won't get more than 8-bit-per-pixel (bpp) pseudocolour that way.

Using the Linux framebuffer
The basic approach is to open /dev/fb0 as a random-access file, then write pixel data directly to it. The resolution of the PMA screen is 320x240 when addressed this way, so /dev/db0 appears as a file 76800 (=320x240) bytes long. The first 320 bytes is the first screen scan line, the next 320 bytes is the second, and so on. You can use the mmap() function to map the whole framebuffer into your application's memory, and just address it like a 320x240 byte array.
      The usual way of configuring the Linux framebuffer driver is by way of ioctl() calls. I have found that many of these calls are unimplemented by the Archos driver, so some experimentation may be needed.

Using the Archos framebuffer API
The framebuffer API treats the screen as three overlapping layers. The top layer is the standard Linux framebuffer, onto which the usual elements of the graphical user interface are drawn -- menus, buttons, etc. This layer has a fixed resolution of 320x240 pixels, at 8 bpp. It is this layer you are drawing on when you write to /dev/fb0 as discussed above. All the standard QT graphics API calls write on this layer as well. In normal circumstances (that is, running ordinary Qtopia applications), the two underlying layers are not even visible. I shall refer to this layer as the `QT layer'.
      Below the QT layer are two variable-sized video layers. Only one of these is accessible through the Archos SDK (so far as I can tell). Despite what it says in the Archos documentation, the default resolution of the accessible layer is 640x240 (not 640x480). In order to use video layer, you must make the QT layer transparent, so that the video layer can show through. In the simplest case, you can create an application with a QMainWindow as its main widget, and set the background colour to QColor(0xFE, 0, 0xFF). So, the outline of a trivial application might look something like this:

int main(int argc, char** argv)
  {
  QPEApplication a(argc, argv);
  QMainWindow mainwidget;
  mainwidget.setBackgroundColor(QColor(0xFE, 0, 0xFF)));
  a.showMainWidget(&mainwidget);
  while (...)
    {
    // Write to video layer
    a.processEvents(); // Allow Qtopia to carry on working!
    } 
  return 0;
  }
This application creates a single window, with a title bar, etc. You can add the usual stuff -- menus, etc. -- as required.
      If you run this code, what you'll see is an ordinary Qtopia window, with random stuff in the middle. The random stuff is what just happens to be left in the video layer from the last application to use it. This might be the output from the video player, for example.
      To write on the video layer itself, you need to use the CoprocInterface object, which is straightforward enough. Here is an example:
#include <coprocinterface.h>
#include <aresourceset.h>

// Reserve the video hardware for this app
AResourceSet* ars = AResourceSet::get();
ars->reserve(ars->ResImageResizer |
  ars->ResDSP | ars->ResSDRAM);

// Get a reference to the video processor
CoprocInterface *cpi = CoprocInterface::get();

// Get a reference to frame(0), which is the one actually
//  in the display
unsigned long vfoZero = cpi->videoFrameOffset(0);

// Create a buffer of pixel data of the appropriate size
//  (640x240 if the framebuffer is left at default settings)
unsigned short int buff [...];

// Put the pixel data in the buffer
buff[0] = ...; buff[1] = ...;

// Dump the buffer to video memory
cpi->writeVidMemory (vfoZero, buff, sizeof (buff));
And that's about it, really. You can use the FramebufferInterface class to set the resolution of the video layer, but be aware that you need to do this before the `transparent' QT window is painted -- otherwise the display is garbled (not sure why). See below for more information about the PMA's pixel format (colourspace).

Q. How do I use the hardware image scaler to expand/reduce images to fit the screen?
A. The simplest way, I think, is to build your image in one of the un-displayed memory regions in the video processor, then use the ImageScaler class to both scale it and transfer it to the display region.

#include <imageresizer.h>

ImageResizer *scaler = ImageResizer::get();
unsigned long vfoZero = (unsigned long)cpi->videoFrameOffset(0);
unsigned long vfoOne = (unsigned long)cpi->videoFrameOffset(1);

//... use writeVidmem to write to vfoOne, as described above

// Set the sizes of the source and destination areas
int srcWidth = ..., srcHeight = ...;
int destWidth = ..., destHeight = ...;

QSize srcImageSize (srcWidth, srcHeight);
QRect srcWindow (0, 0, srcWidth, srcHeight);
QSize dstImageSize (dstWidth, dstHeight);

//... scale and copy from vfoOne (offscreen) to
//    vfoZero (onscreen)

scaler->blitImage (vfoOne, srcImageSize,
    srcWindow, vfoZero, dstImageSize); 

Q. Which pixel format (colourspace) does the PMA430 use?
A. The PMA430 video layer uses YUV422 format (also known as YUYV). This gives 24 bpp colour resolution with 16 average bits per pixel. This seemingly-miraculous feat is by sharing the chroma data between pairs of pixels. In YUV422, the display is made up of 32-bit (4-byte) `megapixels', where each megapixel represents two screen pixels. The format of each megapixel is as follows:

1st byte: luminance of first pixel in the pair
2nd byte: U-chrominance of both pixels
3rd byte: luminance of second pixel in the pair
4th byte: V-chrominance of both pixels
Because of the sharing of chrominance values, it is difficult to specify an exact colour depth for the PMA display. At maximum framebuffer resolution -- 640x480 -- and with an external monitor, the colour depth is between 16 bpp and 24 bpp, depending on whether adjacent pixels happen to take the same or very different chroma values. When the video overlay is projected onto the LCD screen, there are four pixel values in the overlay for each pixel of the LCD (which is only 320x240), so the colour depth will be a full 24 bpp. However, it is unlikely that the LCD hardware is able to discriminate this full colour range. Most likely the colour resolution of the LCD panel is about 18 bits (260,000 colours).
©1994-2006 Kevin Boone, all rights reserved