![]() |
![]() |
![]() |
![]() |
These FAQs (Frequently Asked Questions) present short answers to questions client application developers often ask about the MME. For more detailed information, see the relevant sections of the MME Developer's Guide.
I have installed the MME and its components, but I can't play anything. What should I do?
If you have installed the MME but are unable to play anything — or it appears that you are unable to play anything, you should start by making sure that your target is configured correctly, as follows:
# wave path to/sample.wav
![]() |
The wave< utility sends a file to io-audio, and can be used to test io-audio. It is not very useful, however, on systems, such as the Jacinto, where io-media is configured not to use io-audio. |
I have configured the MCD to detect mediastores, but the MME doesn't find these mediastores. What is wrong with my configuration?
To detect mediastores, your system must have the MCD and the slots table configured correctly.
The MCD (Media Content Detector) monitors the appearance and disappearance of paths on your system, and you must have it configured correctly to inform the MME of the insertion, availability and removal of mediastores. The paths that the MCD monitors are specified in a configuration file. The default file is $QNX_TARGET/etc/mcd.conf, but your system may be using another file.
You must also configure the MME's slots table to associate mediastores with the devices that provide them.
For example, for the MME to find USB mediastores, you need to add an entry to the MCD configuration file, and add a corresponding entry for every USB device to the slots table.
MCD configuration file: [/fs/hdumass*] Callout= PATH_MEDIA_PROCMGR Argument= /proc/mount Priority= 11,10 Start Rule= INSERTED Stop Rule= EJECTED
The above example tells the MCD to monitor all /fs/hdmass* paths, which include /fs/hdumass10-dos-1 and /fs/hdumass20-dos-1.
For the MME to treat these paths as mediastores, you must add to the slots table an entry with the exact path for each device:
INSERT INTO slots(path,zoneid, name, slottype) VALUES('/fs/hdumass10-dos-1', 1, 'USB', 1); INSERT INTO slots(path,zoneid, name, slottype) VALUES('/fs/hdumass20-dos-1', 1, 'USB', 1);
![]() |
The MCD can use wildcards, but the slots table requires an entry for every device. |
I have two different USB sticks, and the MME doesn't recognize that they are different mediastores. This looks like a bug.
This is not a bug. It is expected behavior for USB sticks that are exactly the same size and that do not have unique identifiers. Many USB sticks do not have at least one of a WMPInfo.xml file, a volume name or a unique serial number. Without one of these unique identifiers, the MME has no mechanism for distinguishing between two USB sticks of the same size.
To solve the problem in a development environment, you can either assign a unique volume name to each USB stick, or synchronize them with Windows Media Player, which automatically creates a WMPinfo.xml files.
In a production environment, you can have the HMI write a volume name or other unique identifier to USB sticks the first time they are inserted.
I have a CD with MP3 data files, and audio tracks. The MME only synchronizes the data files, and ignores the audio tracks..
This behavior is the expected behavior for the MME 1.0.0. The MME uses the first entry in a CD's table of contents (TOC) to determine if the CD is an audio or a data CD, and makes only one entry in the mediastores table for the CD.
This behavior means that the MME presents a CD with both audio and data files to the client application as either an audio CD or a data CD, based on the type of file in its first TOC entry. If the CD is presented as a data CD, the client application can access only the CD's data files; if the CD is presented as an audio CD, the client application can access only the CD's audio tracks.
See also “CD detection and presentation” in the chapter Working with Mediastores of the MME Developer's Guide
The MME spends a lot of time synchronizing files in formats that my implmentation does not support. How can I speed things up?
The default setting for the MME is to synchronize all mediastores and files. However, you can configure the MME to not synchronize:
For more information, see the chapter Configuring Media Synchronizations in the MME Configuration Guide.
![]() |
The MME can also be configured to not synchronize specified mediastores, by specifiying the paths to these mediastores in the configuration element. |
The MME performs well through entire synchronizations, but sometimes at the end there is a delay of several seconds before it sends the MME_EVENT_MS_SYNCCOMPLETE event to inform me that it is done. Is this a bug?
This delay is expected behavior. When the MME synchronizes prunable mediastores that it has synchronized earlier, it may clean up unused metadata in its database. This clean up may take up to several seconds, depending on the size of the MME database, and cause a corresponding delay between delivery of the MME_EVENT_MS_*PASSCOMPLETE event and delivery of the MME_EVENT_MS_SYNCCOMPLETE event. For more information, see “Database clean up during synchronization” in the chapter Synchronizing Media of the MME Developer's Guide.
The MME appears to be playing a media file correctly, but no output is audible.
The default MME configuration file (mme_data.sql) may specify output to a device that does not work for your board.
Check that the output location specified in your MME configuration file points to the device with the speakers from which you expect the audio output. If the specifed output location does not point to the device with the speakers, do one of the following:
or:
INSERT INTO outputdevices( type, permanent, name, devicepath ) VALUES( 1, 1, 'defaultoutput', '/dev/snd/correct_output_device' );
For more information, see the chapter Control Contexts, Zones and Output Devices in the MME Developer's Guide.
Random mode works for different mediastores, but it doesn't work for CDs.
Not all external CD changers support random and repeat modes. If random mode works for other mediastores, then you are probably using these modes correctly. The most likely answer is that your exteranl CD changer does not support random mode. Check the specifications for the CD changer. For more information, see the MME Developer's Guide: “Using random and repeat modes” in the chapter Playing Media, and mme_setrandom() and mme_setrepeat() in the chapter MME API.
When it encounters a damaged track on a CD, the MME keeps trying to play the track. How can I make it just move on to the next track?
The default MME configuration for handling damaged tracks is to skip forward 200 milliseconds and retry playback 10 times, doubling the distance of the skip forward at each retry. You can change this configuration to suit your environment.
The MME's trksessions table keeps growing with unused track sessions. What can I do about this?
The MME does not automatically remove track sessions when you remove the mediastores with the tracks for these track sessions. When you prune a mediastore from your database, you should call the function mme_rmtrksession() to delete from your database all track sessions that use tracks on the pruned mediastore. For more information, see “Deleting track sessions” in the chapter Playing Media of the MME Developer's Guide.
The MME does not synchronize iPods when they are plugged in, but it synchronizes all other mediastores.
The size and design of iPods can result in long waits while the devices are being synchronized. Therefore, the MME is designed to automatically synchronize all mediastores it detects except iPods. When your client application detects an iPod device, it should initiate a directed synchronization on the iPod folders the user wants to access. To minimize the time required to deliver metadata to the end user, when it is synchronizing iPods, the MME updates the title field in the library, giving users enough metadata to select a track and start playback.
For more information, see “Synchronizing iPods” in the MME Developer's Guide chapter Working with iPods.
Why does the MME not change the fid when it is playing music on an iPod?
iPods manage their own track sessions and do not report the file IDs of their track sessions to the MME. See “Getting track information when playing media on iPods” in the MME Developer's Guide chapter Working with iPods.
When I try to access a PFS device, I get a WMPinfo.xml file with the following: <NotSupported>101b</NotSupported>. Is there a bug in the PFS device driver?
The Not supported 101B means that you are trying to access a PFS device that does not support the GetPartialObject MTP command without having specified that you want this support when you started io-fs-media.
The default configuration for io-fs-media is to not support PFS devices that don't support the GetPartialObject MTP command. To start io-fs-media to support PFS devices that don't support the GetPartialObject MTP command, you must specify the getsize option and the buffer size when you start io-fs-media.
For more information, see:
io-media loads all the DLLs in the DLL directory, not just the ones it requires.
This is the expected behavior. io-media loads all DLLs from its DLL directory in order to check if it can recognize them as MMF filters or as other Addon Interface (aoi) DLLs. Placing io-media DLLs in a directory with other DLLs, such as for example, /proc/boot, may adversely affect system performance.
To ensure system efficiency, all io-media DLLs should be installed in their own, exclusive directory, such as, for example, /lib/dll/media. No other libraries should be installed at this location.
For more information about io-media DLLs, see “Where to install io-media DLLs” in the MME Utilities Reference.
The MME appears to deliver inaccurate time positions during playback. The times reported show jitter, as though the playback speed is speeding up or slowing down. What can I do to correct this?
This behavior is expected; there is nothing to correct. The accuracy and frequency of time updates depends upon the implementation of the io-media graphs used to process the media, and on the accuracy and frequency of updates delivered by the underlying drivers and hardware. Graphs should attempt to deliver a timing resolution of 100 milliseconds or better, but this resolution is not always available.
The MME delivers the MME_EVENT_TIME event to the client application only when it receives a time update from the device or driver (through io-media). Thus, if, for example, the MME's notification interval to the client application is set to 100 milliseconds, but a driver delivers time position updates to the MME only every 300 milliseconds, the client application will only receive time updates every 300 milliseconds and may see jitter in the time reporting.
The MME successfully plays a high bitrate encoded file, but is unable to fast forward or reverse on the file.
This behavior may indicate incorrect bitrate information in the file header, or some other problem with the file header. Depending on the nature of the problem with the header, different media players may or may not be able to play the file.
iPods are resetting frequently, for no apparent reason.
iPods have a tendency to reset if you do not use the -c option when you start io-usb.
Change your startup to start io-usb with the -c option. With this option selected, the launcher application selects the device configuration to use, instead of just using the device's first configuration.
Playback on an iPod device skips when I load album art. How do I correct this problem?
iPhone and iPod touch G1 connected via high speed USB have exhibited skipping when loading artwork during the start of playback.
We recommend that until this problem is resolved, use mme_device_get_config() to determine the iPod or iPhone model, and refrain from artwork retrieval on models that exhibit the problem. The model ID and number are in the XML content retrieved by mme_device_get_config(); for example:
<iPod> <version> <model_id value="00150000" valuetype="hex"/> <model_number value="MA627C" valuetype="text"/> <firmware value="020201" valuetype="hex"/> ...
For more information, see “Getting and setting device configuration values” in the MME Developer's Guide chapter External Devices, CD Changers and Streamed Media, and the Apple iPod and iPhone specifications.
![]() |
![]() |
![]() |
![]() |