XMMS-Solaris Frequently Asked Questions

XMMS-Solaris FAQ

Running/compilation errors

Compatibility

Miscellaneous


I'm getting errors about wcsstr when compiling

You might get errors when compiling playlist_list.c about symbol wcsstr not being found. This only happens on Solaris 2.6 (and possibly earlier versions)

This is due to a half-hearted attempt at having wide character support in Solaris; XMMS checks for the existence of wchar.h and assumes this is a complete implementation of wide character support (including wcsstr). The fix is to modify xmms/playlist_list.c at line 232 where it reads:

#ifdef HAVE_WCHAR_H

and change it to

#ifdef HAVE_WCHAR_HXXX

This will prevent the bad code from being compiled. As near as I can tell, this will only affect you if you rely on non-ASCII fonts (Unicode?). Also, this problem does not exist in Solaris 7 or 8 as both implement wcsstr().

Alternatively, you can, if you wish, use wcswcs() which seems to be the same as wcsstr(). Simply add a line saying:

   #define wcsstr wcswcs

According to Frank Wojcik, this seems to work.


Why am I getting "shmget" errors?

GTK/GLIB require a lot of shared memory, more than the 1MB default under Solaris. A symptom of this is a 'shmat' error on starting XMMS. This causes the player to not work. To fix this, add the following to /etc/system:

  set shmsys:shminfo_shmmax = 8388608
  set shmsys:shminfo_shmmni = 0x1000
  set shmsys:shminfo_shmseg = 0x100

You will have to reboot for this to take effect. Note that while the kernel will now allocate up to 8MB of shared memory, this is a maximum and it will only allocate this much if it needs to. In short, it's better to overestimate the amount of shared memory required as you will have to reboot to increase it.

An alternative option (courtesy of Mark Weel) is to configure gtk+ using --enable-shm=no. This allows installation of XMMS without superuser privelages.


Why doesn't setuid execution work?

setuid execution (for realtime priority) doesn't work as well as it might; Solaris won't load shared libraries from LD_LIBRARY_PATH when using setuid programs for security. As a result, you might have to make symbolic links in /usr/lib pointing to the real libraries. It may be possible to hard code the library paths, but I haven't tried this. ldd xmms will show which libraries are required. Remember to check plugins! esd plugin also requires libesd.


What causes 'Gdk-Error: Bad Match'?

You may find an error similar to the following when you try and start XMMS:

Gdk-ERROR **: BadMatch (invalid parameter attributes) serial 108 error_code 8 request_code 2 minor_code 0

This seems to happen on machines with Creator 3D (or other high-end) graphics cards where the display is set to 8bpp and the card is capable of 24bpp.

There are currently two solutions; the first (and recommended) solution is to upgrade to XMMS 1.2.2 or above (1.2.3 is recommended as this fixes some other problems with colours).

If upgrading isn't an option (unlikely), you can use the following information as a workaround:

Dan Szkola provided the following information:

...this was a problem with the default depth of the display. Changing the default depth to 24 fixed this problem. This can be accomplished by putting the following line in /etc/dt/config/Xservers:
:0 Local local@console /usr/openwin/bin/Xsun :0 -nobanner -dev /dev/fbs/ffb0 defdepth 24

For those using xinit, this solucion courtesy of Roman Shterenzon:

I just forgot that when I turned away from CDE, the /etc/dt/config/Xservers wasn't used anymore. I created file .xserverrc :

  #!/bin/sh
  exec /usr/openwin/bin/Xsun :0 -nobanner -dev /dev/fbs/ffb0 defdepth 24

and voila, everything works.


Why don't I get any sound when XMMS starts?

This is probably due to one of two things (assuming you've checked the volume and speaker/headphone cables):

  1. you are using the Disk Writer plugin; select the preferences and change output plugin to the Solaris one. This is not an issue as of version 1.2.4 of XMMS as it will, by default, use the Solaris plugin on Solaris machines.
  2. You haven't selected the correct output ports. Solaris audio has 3 outputs; headphones, line out and speaker (ie, the internal speaker). Any combination of these devices can be used and configured under the output plugin preferences.

CD playing doesn't work

CD playing doesn't work 'out of the box'. Here is a fix I found on usenet:

This took me a while to figure out when I was using xmms; it seems to be very counterintuitive. In my .xmms/config file I have:

  [CDDA]
  device=/vol/dev/aliases/cdrom0
  directory=/cdrom/
  use_oss_mixer=FALSE

Later in the file, in the [xmms] section:

  [xmms]
  ...
  filesel_path=/cdrom/

For some reason, you also seem to need to have the volume management daemon running (vold).

Finally, in some cases, you may not have an audio cable between the CD drive and the audio card; this is certainly the case in many Ultra 1's, I believe.

Update! If you're having trouble, try the new 0.6.1 plugin (or newer).


My CD audio sounds bad

CD audio might be a bit cruddy to begin with after a reboot; this can be fixed by starting /usr/openwin/bin/audiocontrol and setting the record settings.

Update! If you're having trouble, try the new 0.6.1 plugin (or newer).


I'm getting "referenced symbol not found" errors

Some people have been getting errors like this:

$ xmms
ld.so.1: xmms: fatal: relocation error: file /usr/local/lib/xmms/Output/libdisk_writer.so: symbol __udivdi3: referenced symbol not found
ld.so.1: xmms: fatal: relocation error: file /usr/local/lib/xmms/Input/libmpg123.so: symbol __umoddi3: referenced symbol not found

There are two fixes for this; the first is from here on the XMMS forum:

This problem went away when I ran ./configure as follows:
LIBS="-L/usr/local/lib/gcc-lib/i386-pc-solaris2.7/2.95.2 -lgcc" ./configure

Make sure you run 'make distclean' before running the above and also use the path to your version of gcc; eg, for gcc 2.8.1 on Solaris 2.6 for sparc would be LIBS="-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1 -lgcc"

The other is from Todd Goodman; basically, the problem is that your setup is picking up the Solaris ld instead of the bintools version. Install bintools and make sure that /usr/local/bin is before /usr/ccs/bin in your path.


Does XMMS-Solaris work on Sunray devices?

Apparently, yes. The limits for shared memory still apply, and administrators of the Sunray server may wish to increase the shared memory values given above to compensate for the increased demand of shared memory XMMS may entail.

Another point to consider is that Sunray devices rely on the AUDIODEV environment variable to direct sound to the correct client. To allow for this, the XMMS-Solaris plugin can be set to always use the AUDIODEV environment variable and ignore the value in ~/.xmms/config. Simply go to Preferences, configure the Solaris plugin and select the check box marked "Always use AUDIODEV environment variable".

This may also be useful in situations where you have accounts on multiple machines where the audio device is different in each one; you can set AUDIODEV to the correct device in ~/.cshrc (or whatever) based on the hostname.


Why am I having problems under Solaris 8?

Some users have reported poor sound quality and other problems under Solaris 8. It is thought that this is due to the new mixer code in Solaris 8 (there are white papers etc available from Sunsolve). I've heard there are internal bug reports on the mixer code which may or may not be related. I'm now using Solaris 8 and have yet to experience any problems, so I don't know how to fix it! If anyone does find a problem and can supply patches, let me know.

Further to this, I've heard that it's not just XMMS that does this; apparently XAudio does the same. This means it's not just an XMMS problem; whether both are bugged in the same way or the Solaris code is bugged I'm not sure. Also, it seems a simple pause/replay fixes the problem.


Why aren't .wav files working?

Versions prior to 0.6.3 have problem playing 16 bit wav files on the SPARC platform (I think x86 should work ok, though). If these are the problem, please upgrade.

There are problems playing 8 bit wavs; I assume this is due to the coversion routines not working correctly. I'll try to fix this ASAP.

As an aside, given how long these bugs went unreported shows just how few people are using XMMS to play .wav files :)


Does it work with <name of card>

Unless it's mentioned in the requirements, you're out of luck as Solaris won't support it (or, in the case of the AMD audio devices, they're too much hassle to support).

However, you may still have a chance of XMMS working. You can buy commercial drivers for many cards from 4Front technologies which will support cards. You should then be able to use the OSS driver supplied in the basic XMMS install to play MP3's using XMMS.


How is XMMS-Solaris licensed?

Like XMMS, the Solaris plugin is distributed under the GNU Public License. I don't really have much choice in this as a lot of the code was ripped off from, er, based on the original OSS code from XMMS.


I'm still having problems; what can I do?

If you have any problems, please mail me and I'll do my best to help. I'm also interested to get any input files which don't work under xmms-solaris but work ok under linux/FreeBSD. This will help me find any bugs in the code. Do not mail me the files without giving me simple mail first to see if I am working on the problem or not.

File last modified: Saturday, 06-Mar-2004 14:12:08 GMT