MME Frequently Asked Questions (FAQs)

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 can't play anything with the MME

Question

I have installed the MME and its components, but I can't play anything. What should I do?

Answer

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:

  1. Check that io-audio is correctly configured on the target; for example:
    # wave path to/sample.wav
  2. Use testapp-cmdline to check that io-media-generic is properly configured and can play files; see testapp-cmdline in the MME Utilities Reference for more information and examples.
  3. Use mmexplore to check that mme is configured correctly, and that you can play a track that has not ben synchronized; see mmexplore in the MME Utilities Reference for more information and examples.
  4. Use mmecli to confirm that mme is correctly configured, that synchronizations are working, and that you can play files in the MME database. See the MME Quickstart Guide in this Introduction, and mmecli in the MME Utilities Reference for more information and examples.

Note: 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.

The MME doesn't find the mediastores

Question

I have configured the MCD to detect mediastores, but the MME doesn't find these mediastores. What is wrong with my configuration?

Answer

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);

Note: The MCD can use wildcards, but the slots table requires an entry for every device.

The MME can't tell the difference between two USB sticks

Question

I have two different USB sticks, and the MME doesn't recognize that they are different mediastores. This looks like a bug.

Answer

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.

The MME doesn't synchronize all files on a CD

Question

I have a CD with MP3 data files, and audio tracks. The MME only synchronizes the data files, and ignores the audio tracks..

Answer

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

Synchronizing unsupported file formats

Question

The MME spends a lot of time synchronizing files in formats that my implmentation does not support. How can I speed things up?

Answer

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.


Note: The MME can also be configured to not synchronize specified mediastores, by specifiying the paths to these mediastores in the configuration element.

Delay at end of synchronization

Question

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?

Answer

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.

No audio from playback

Question

The MME appears to be playing a media file correctly, but no output is audible.

Answer

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:

For more information, see the chapter Control Contexts, Zones and Output Devices in the MME Developer's Guide.

Random mode doesn't work on a CD changer

Question

Random mode works for different mediastores, but it doesn't work for CDs.

Answer

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.

The MME keeps trying to play a bad track

Question

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?

Answer

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 database fills up with unused track sessions

Question

The MME's trksessions table keeps growing with unused track sessions. What can I do about this?

Answer

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.

Problems with iPod synchronization

Question

The MME does not synchronize iPods when they are plugged in, but it synchronizes all other mediastores.

Answer

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.

The MME doesn't display correct file IDs when playing iPods

Question

Why does the MME not change the fid when it is playing music on an iPod?

Answer

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.

PFS device returns “Not supported 101B” error

Question

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?

Answer

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 DLLs it doesn't need

Question

io-media loads all the DLLs in the DLL directory, not just the ones it requires.

Answer

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.

Why is there jitter in the playback time positions reported by the MME?

Question

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?

Answer

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.

Trick play fails on a high bitrate encoded file

Question

The MME successfully plays a high bitrate encoded file, but is unable to fast forward or reverse on the file.

Answer

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.

iPod resets frequently

Question

iPods are resetting frequently, for no apparent reason.

Answer

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.

Problems with playback when retrieving artwork from iPods

Question

Playback on an iPod device skips when I load album art. How do I correct this problem?

Answer

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.