# The XFree86/OS2 FAQ

Version 0.8 - 5 Aug 97
by Holger Veit, Sebastien Marineau This FAQ represents the knowledge of several hundred mails received since the release of XFree86/OS2 3.1.2D to 3.3.1. Before you ask another question, search here; there is a good chance that your question has been answered already in this list.

New or changed items in this versions are marked with a star '*' in front of the number.

1. General Information
2. Installation and Troubleshooting
3. Compatibility, Features, Tips and Tricks
4. Programming and Porting of Software
5. Reported working hardware
6. Known Bugs and Missing Features in 3.2

## 1. General Information

1.1 What is X11, X11R6.1, XFree86, XFree86/OS2?
X11, more precisely called "The X Window System" is a complete window system that usually runs as the de-facto standard in Unix environments. X11R6.1 is the name of the current release. XFree86 is a port of the X Window System to x86-based systems. XFree86/OS2 is a particular port of XFree86 for OS/2 based systems.
Books about X11 exist in any well-sorted CS bookstore.
1.3 How complete is XFree86/OS2?
Almost complete. Missing is xdm (because there is no secure architecture in OS/2 yet - in work), x11perf/xieperf (because I was to lazy yet to rewrite the various shell scripts). Other things should be present; but this does not mean that they work correctly... For other restrictions, read section 6 of this FAQ and the LATEST.OS2 file.
1.4 What are the differences to commercial implementations?
Personally, I am aware of IBM's PMX and Hummingbird's Exceed product. There may be some more in the meantime. The two products above differ from XFree86/OS2 mainly in two points:
• you have to pay for them
• they are based on the PM desktop
The latter means that they admittedly fit better into the complete system, but also that they rely on the implementation of the PM video subsystem and its performance (which is lousy for certain hardware).

Also some facilities might not be present, such as background images, PEX, XIE, DGA, or other X extensions.

1.5 There are so many README files. Which one should I read?
Why? All of them! Seriously: README and README.OS2 are the most important for the first time. Also read files that refer to your video hardware (such as README.S3, for instance).
1.6 Is there a specific news group?
There is no newsgroup specifically for XFree86/OS2, if there is sufficient traffic, we could think about creating one. So far I am usually available in the newsgroups comp.os.os2.programmer.misc and comp.os.os2.programmer.porting. After the release, I will also scan comp.os.os2.setup.misc for XFree86/OS2 specific questions (including installation problems).

Please avoid cross-posting to other groups, this won't speed up answers, and usually annoys people who pay for their news and have broken software which does not recognize crossposts.

Many people who have been using the last version(s) of XFree86/OS2 will also listen in the mentioned newsgroups, and will be helpful.

Please choose a meaningful subject, preferably containing the word "XFree86" or "XFreeOS2" in the line.

*1.7 Is there a mailing list for XFree86/OS2?
Yes, read http://set.gmd.de/~veit/os2/xf86mail.html for details. If you already know how to subscribe to "Majordomo" mailing lists, subscribe to
majordomo@set.gmd.de
The list name is "XFreeOS2", the address for a posting is
xfreeos2@set.gmd.de
There is also a digest version available, read the above URL.
NEW 1.7.1 Are there other sources than this FAQ?
Yes, you can perform a full-text search through the mailinglist archive at set.gmd.de.
1.8 YOU MUST HELP ME, I HAVE PROBLEMS!
#exclude <politeness.h>
I MUST die some day, as everyone will. But this is the only thing I really must. The whole project is totally on a voluntary basis, everyone may contribute, but noone is forced to use the software, and particularly YOU cannot force any warranty or usability of the software, or make me do this or that.
Just to make this clear!
#include <politeness.h>
1.9 Where do I get the source code for XFree86/OS2?
The source code for XFree86 is available from the common XFree86 FTP servers. Also look at for other locations. For alpha and beta versions, the source code is not released.
*1.9.1 I am from ****land which has a very bad Internet connection, so I am unable to FTP XFree86/OS2, so would you please mail me this program?
ROTFL! Do you know how much this is? The packages alltogether are 30MB zip files. I know how long I have to upload them to our server with a 28.8K modem. Do you expect me to send you 30MB in small portions that your bad Internet connection can handle? Forget it, and buy a Hobbes CD or alike if you cannot download.
1.10 Help, I retrieved the latest version via FTP, and it says it is expired!
3.1.2[D-G] and 3.2A (anything with a letter in the version code) are beta versions which are built with an expiry date. This behaviour is standard with beta versions and is intentional. XFree86/OS2-3.3.1 does not expire.
1.10.1 This version 3.2A works fine for me; I don't want to obtain a new version, so please tell me how to circumvent that expiry date.
No, I won't tell you.
1.11 How do I ensure that I have the latest code?
The official bugs page http:/set.gmd.de/~veit/os2/xf86bugs.html lists dates and sizes of the files we consider the most recent ones. Also this page may point to fixes and updates that you might have to install. Please report any abuse on FTP and Web servers which claim to have a more recent version (and don't refer to the pages at set.gmd.de) - this might be a faked or bogus version.
1.12 I have found a bug. How do I report it?
Ensure you really have found a bug, not a feature. Be sure you have read and understood all accompanying READMEs including this FAQ. Consult the official bugs page http://set.gmd.de/~veit/os2/xf86bugs.html and verify that this bug hasn't been found yet.
If you appear to have found really a bug, send a detailed bug report to
Holger.Veit@gmd.de
. Read Q 1.13 on information I need to know.
1.13 What do you need for a bug report?
1. a valid email contact. In the past, some contact through the WWW pages failed because of wrong configured WWW readers. Some homebrew PPP link which is up approx 1 hour per week is likely not a valid email address.
2. The relevant hardware configuration (CPU, RAM, video card, monitor, OS, fixpacks)
3. The error.log file
4. The xf86log.os2 file
5. The popuplog.os2 file
6. The XConfig file
7. If suspected, the CONFIG.SYS file
8. A description of the effect and how it can be reproduced
9. Information whether this also occurs on other systems with same or different hardware, or Linux, etc.
10. 100000 US(...no, just kidding...) • To produce a error.log file, go to some directory and execute from a PM window (CMD.EXE) the following command: startx 2>error.log Type it exactly this way, don't add spaces or comments. • The xf86log.os2 file will be *sometimes* produced in the root directory of your boot partition. In many cases, it is not present or empty. • The popuplog.os2 file resides, if it exists, in the root directory of the boot partition. If you find one, delete it, and create the error.log file again (see above). If there is a new one then, it is from the current run. • The XConfig file is the /XFree86/lib/X11/Xconfig file produced by the xf86config utility. 1.13.1 I have submitted a problem report to you, and you haven't answered yet. Unfortunately, this may happen, although I try to reply to all questions and reports. There are a number of reasons for this: • If there is a simple answer, including the well-known RTFM, I reply rather fast, during work hours in Germany (CET) maybe even within minutes. • You might very likely wait for very long for mails of the Q 1.8 style. • If the problem is complicated, I try to forward this problem to people, e.g. the XFree86 developers or even IBM (if this turns out to be some OS/2 bug), and you probably won't hear from me again for very long. • Occasionally, I am out of office, and won't read mail. • Probably you won't believe it, but there is REAL LIFE(tm), and I have recently found out about its existance. • Occasionally, I lose or forget some mail. This could be related to the fact/problem that I am human, not a mail robot. 1.14 I have problems with the installation, and don't know if this is a bug. What to do? Read section 2 of this FAQ. If there are still unclear problems, first try to ask in the newsgroup comp.os.os2.setup.misc with a meaningful subject (only this newsgroup: this is what we read for this kind of problems). If you are on the XFree86 mailing list, you may also ask there. Please be concise there though, rather than flooding it with all kinds of files - some people have to pay for their mail. You'll be asked for more information, if the problem is not simple. 1.15 Software, I want software! Look at the ported software WWW page at http://set.gmd.de/~veit/os2/xf86ported.html whether there is something for you. This page is updated whenever someone ports something and gives me a pointer (read this page for submission rules). YOU MIGHT CONSIDER PORTING SOMETHING AS WELL! 1.16 Are there some X11 books? Sure, ask in your book store. A user's guide is for instance: • Niall Mansfield, The X Window System - A User's Guide, Addison Wesley, or • The Definite Guides to the X Windows System, Volume Three, X Window System User's Guide, O'Reilly&Associates The latter one is part of an eight (nine,ten?) volume documentation set for the X11 programmer. From my biased point of view of a programmer, this is the most comprehensive must-have for the serious programmer (however, it does not belong to the cheaper booksets, unfortunately). Your mileage on book recommendations may vary, of course, and there is much more stuff in the shelves. ## 2. Installation and Troubleshooting 2.0 You point to a file XF32*.zip in this FAQ and your docs, but I found none on the FTP servers. The naming convention of files is as follows: • XF-version#-content.zip for distribution files • X-version#-content.zip if version# would make it longer than 8.3 chars • S-version#-content.zipfor "small X servers" which don't have the seldomly used extensions XIE and PEX in them. So what you have seen is a file from XFree86-3.2. Maybe meanwhile a new version is out, e.g. X32A*.zip (which is a beta version 3.2A), or XF33*.zip (which is the public version 3.3), so you won't find it anymore. If the question remains in this FAQ, it applies to the newer version as well. Get the new file unless otherwise stated. 2.1 I have only a FAT file system. The doc says I need HPFS. What can I do? Well, reformatting your disk, or buying a new one? Sorry, life ain't easy. 2.2 My video hardware works fine with OS/2, why doesn't it work with XFree86/OS2? This is because XFree86/OS2 uses its own video handler, and does not rely in any way on the OS/2 video subsystem. Infact, we are investigating, whether it is possible to run without PM entirely. The sets of supported hardware of OS/2 and XFree86 overlap, but do not match exactly. The /XFree86/lib/X11/doc/README file lists supported video hardware. 2.3 I have the video card XYZZY, which is not listed (see 2.3.1 Is the Matrox Millenium and the S3 ViRGE supported? Yes, preliminary support for the Millenium is in the SVGA server, for the ViRGE in the special S3V server (the plain S3 server won't work). 2.3.2 Does the Matrox Mystique also work? Yes, XFree86-3.3 supports the Matrox Mystique. 2.3.3 Newer notebooks come with a chipset from NeoMagic. Why is this unsupported? NeoMagic refuses to provide programming specs to XFree86, so you will be out of luck. You may complain to them if you like. 2.3.4 Is the FIRE GL 1000 or GLINT supported? Yes, there is special alpha code in the SVGA server of 3.3.1. *2.3.5 Why is the meanwhile popular 3D-Blaster a.k.a. Rendition Verite chipset unsupported? We are currently negotiating a deal with Rendition about docs to write support, but as usual, this business with hardware vendors is a tedious enterprise. At least there is light at the end of the tunnel. *2.3.6 Is the Matrox Millenium II supported? There is some alpha level support, not well tested in the SVGA server of 3.3.1, but it is not yet officially supported. 2.4 The video card XYZZY does not work with any server. Will you write an X Server for me? I (nor other people from XFree86/OS2 likely) won't write X servers. This is the business of the XFree86 core group. We basically take what we get and adapt it to OS/2 (besides a general bug fixes and OS/2 dependent improvements). There are three important points to get a server for the own hardware: • test hardware is required • documentation is needed • a volunteer to do the job is needed In some cases, the manufacturer refuses to give out specs (such as NeoMagic); in this case we cannot do anything, and you are SOL with your hardware. If you want to work on support for a new server actively, please send a request to XFree86@XFree86.org . But be warned in advance: the emphasis is on active participation, and the core people there carefully check if this is really the case, and not one of the numerous requests to get access to the source code (which typically remain unanswered). 2.5 When trying to run the system, I get some error message that some XF86SUP.SYS is not present, or similar. I don't have this thing. Oh, you have it, you just didn't read the README.OS2 as you were supposed to. This driver is in /XFree86/lib/xf86sup.sys and needs to be added as a DEVICE in CONFIG.SYS. XFree86/OS2 won't work without it. 2.6 What is the XF86SUP.SYS device driver good for? See also URL http://set.gmd.de/~veit/os2/xf86sup.html This device driver provides certain essential base functionality which is missing from standard OS/2. 2.7 Error message "the XF86SUP.SYS driver could not be installed, blurb..."? What is happening here? You are sure the path is correct? You have probably read my EDM/2 article "32 bit I/O at Warp Speed" and have installed the FASTIO.SYS driver. The XF86SUP.SYS driver is a superset of this. Remove FASTIO.SYS from your CONFIG.SYS; you won't need it anymore, XF86SUP.SYS will take over all the functions. 2.8 What does "EMX.DLL not found" mean? It means you haven't read the docs thoroughly. README.OS2 says you must get and install EMXRT.ZIP. A suitable EMXRT.ZIP should be in the directory where the X33*.zip files are. 2.9 What does "This program requires emx.dll revision 42 (0.9b fix 05) or later. Please delete or update x:\foo\bar\emx.dll" mean? I do have installed the latest EMXRT.ZIP file! It means that there is an outdated version of EMX.DLL still left in your LIBPATH. We make it even easy for you as we tell you where it is: in X:\foo\bar\emx.dll. Remove this file (read the EMX instructions on how to do this). If you still get this error message, now with a different directory, you should seriously consider to clean up your disk to get rid of the various instances of outdated code. 2.10 When I run "checkinstall" as requested by the README.OS2 file, after editing CONFIG.SYS, I get countless errors. Why? Did you reboot after editing CONFIG.SYS? If so, analyze the error messages that checkinstall tells you. Usually it is right with its comments! 2.11 I cannot get rid of the message "***XFWARN......." the "checkinstall" program tells me. Well, you should. Though XFWARN... denotes a warning. It is not fatal but you should be aware that this can point out a problem. 2.11.1 Checkinstall does not complain, but it still doesn't work. No program is perfect, and checkinstall will only find the worst problems. Check other questions in this file to isolate the problem. 2.12 Do I need a fixpack installed? I have none. Don't fix things that are not broken. If your system works well without a fixpack: that's great. Don't change anything. For Warp 3, fixpack 5 contains some recommended fixes. You might consider to install at least this one. In the future, you might be forced to install Fixpack 17 or later (or get Warp 4), because this has certain support which becomes mandatory in the future. Attention: it was recently found that FP26 may break XFree86 support. If you have this, you should return to an older fixpack (e.g. FP22). And yes: fixpacks are cumulative, i.e. a FP with a higher number contains all fixes of the ones with a lower number. 2.12.1 The XF86SUP.SYS driver complains that I don't have a FP17 kernel, so that some things won't work. This is because the XF86SUP.SYS driver of 3.2 has a specific addition which is only available with kernels of FP17 and newer (including Warp 4). In normal XFree86/OS2, you don't need this feature yet. Ignore this message. On the other hand, you might consider installing a new fixpack some day. 2.13 I unpacked everything, and now I don't find the xf86config.exe, the server or the SuperProbe program mentioned in the docs. What happened? Did you use DOS PKUNZIP? Or did you use the zip function of Object Desktop (which doesn't work either)? Or did you unpack onto a FAT partition? And did you read what the docs say about this? 2.14 There is an error box popping up the the "device PTYP0 is not ready". Help? Shouldn't happen with 3.1.2E or later any longer. This points out that you have still an outdated EMX.DLL in your system, or that XF86SUP.SYS and OS/2 got severely confused. I have seen this twice since EMX.DLL was up-to-date; in both cases some other effects brought me to the conclusion that a reboot would be the best solution. 2.15 Something does not work. Can I get more information? Normally you would start the system by running startx. This will display a number of messages for a short time. If something goes wrong, you will likely see it there. To get a permanent version of these messages, simply redirect them into a file 'error.log' by starting the system in the following way: startx 2>error.log Also read Q 1.13 on a few other files that might exist. The following questions deal with messages found in these files. 2.16 What is that "XConfig" file everyone is talking about? This file is created by the "xf86config" program when you install the system according to the README.OS2 file. It is located at \XFree86\lib\X11\XConfig. This file is named XF86Config on Unix systems, and may be located in various other places there. It MUST be in the specified place in XFree86/OS2, in contrast to Unix, though. This file is a text file, and in some cases you MUST edit things there (see below elsehere). 2.17 Can you please send me an XConfig file for my BLURB video card and a BLAH-BLAH monitor? (This is the all-time favorite FAQ in the XFree86 user mailinglist, and is as stupid as a request for "a CONFIG.SYS which works with OS/2"). No. There is no free lunch. The cards database lists a few hundred boards with several options each and there are many monitors as well, so there are countless combinations of XConfig files. You must go through the xf86config configuration program for yourself - everyone else had to do this as well; so don't ask for this. 2.18 What is this XKB option in "xf86config"? XKB is the "X Keyboard Extension", a supposedly general subsystem to deal with keyboard layouts for various systems. It is supposed to replace the old "X modifier map" system (xmodmap). In XFree86/OS2-3.2, this works now. 2.18a This XKB is junk, because there are only a few layouts offered... No, there is more. Simply check None of the above and you will be offered a menu that gives you standard national support. If this is not sufficient, \XFree86\lib\X11\xkb\* offers the source files to create a totally private setup. Check the official X11 documentation. You can still use xmodmap as well. 2.19 I have specified all things correctly in xf86config, and also my video card was listed, but it doesn't work. Multiple effects: doesn't synchronize, horizontal or vertical stripes, mouse movement overwrites background, etc. This is one of the cases where you might need to edit the XConfig file. For many videocards, the file contains option lines in the Device section which are commented out (with a # symbol) by default. These options are named no_linear, nomemaccess , noaccel, or even totally different. Video cards are often different even when coming from the same manufacturer and having the same brand name, but they aren't (some manufacturers are notorious for changing the horses at full speed while the race is going on). You should try out options that are listed in this section and use the one which works for you. Also consult the README.yourservername (e.g. README.S3) if it exists for specific hints. 2.20 Where do I find the parameters of my monitor? In your monitor manual. If you are adventurous, you could also try to guess them, but be warned that older monitors can "burn out" and get damaged if they are fed with wrong input data. So if you find out that with your settings the picture won't stabilize, IMMEDIATELY press the CTRL-ALT-BACKSPACE keys. 2.21 How can I get a better resolution than "640x480"? In 3.1.2E and later, you can switch between the available standard resolutions with CTRL-ALT-KEYPAD+ and CTRL-ALT-KEYPAD-. This does not neccessarily mean that there ARE other resolutions. With 1MB of video RAM, you cannot have more than 1024x768x8, for instance you have not enough video RAM for 1280x1024x8. The X server calculates the allowed resolutions from the available Clocks, the video RAM, the monitor limits, and the available mode lines. This means, if you have a standard-VGA 14" monitor for 640x480 @ 70Hz, the xserver wcould refuse to offer you 1024x768, because it would result in sync frequencies beyond the limits of the monitor. The X server is conservative here, so it might be still possible to tune the frequencies to the limits of the monitor manually (see Q 2.23). 2.22 My laptop has a LCD screen which supposedly can do 800x600, but the server won't accept more, and starts in 640x480 which leaves a 1 inch border unused (seen on Toshiba laptops). Warning: your mileage may vary, do this only on a laptop which really allows 800x600! LCD screens actually don't use horizontal and vertical sync frequencies, so the X server is over-careful with rejecting them. You can try to lie about the capabilities and specify unreasonable 30-100Hz and 16kHz-100kHz for the sync ranges, and then the server should offer you 800x600. There is a gotcha: if you connect an external monitor to the VGA connector, the sync range applies again, so you might configure it for 800x600 first, and then the LCD screen should allow this as well. 2.23 How can I setup a resolution of "1152x900x8", or any other resolution? The Xserver looks for suitable Modeline statements in the XConfig file. By default, the XConfig file has the standard VESA resolutions. For a non-standard resolution, you must calculate the 8 numbers in the modeline manually. Get the file ftp://set.gmd.de/pub/misc/XFree86OS2/fixes/videomod.zip for a documentation for this. 2.24 The X screen is not correctly aligned, it is shifted to the {right,left, top, bottom}, too {wide, small, large, narrow}... etc. The presentation manager screen is "correctly" aligned. With 3.2 there is a (working) utility named xvidtune which allows to shift and stretch the X screen. This will produce a new mode line which you manually have to add to the XConfig file in the place of the old misaligned one. BTW: This program usually won't work with a LCD display (see also Q 2.22). 2.25 Can I have different resolutions for PM and XFree86? Yes, no problem, provided you don't reach the limits of your hardware. 2.26 What does "No screens found" mean? The X server removes all "Modeline" statements from the list of valid modes which don't work for your video card or monitor. In this case, no valid line was left. This happens once in a while with some Diamond S3 cards. Check whether xf86config has setup the Clocks and VideoRam lines correctly, and correct them if necessary. 2.27 I have tried to run "X -probeonly" as requested by xf86config and it says it didn't find clocks. I have a Mach64 card. Mach64 cards and several others have a clock chip which can synthesize many frequencies. Xf86config therefore recommends NOT to run X -probeonly, please read what the program tells you. Some other cards, for instance SVGA cards have fixed frequencies, you must run this. Xf86config has been changed to call the correct X server, but this might not work in all cases. In this case, run it from a CMD window manually by: \XFree86\bin\XF86_yourserver.exe -probeonly | grep "Clocks" and add the corresponding mode line manually to the XConfig file. Note: this line shows that you need the grep program (see also Q 2.28). 2.28 Xf86config reports "grep failed". What is that? During probing, xf86config calls the grep utility, which you don't have installed. Get /os2/unix/grep20.zip from hobbes.nmsu.edu (or elsewhere). Well, this is the last clue that X11 came from Unix; there are a few other tools you might need. /os2/unix/gnu*.zip should have most things you'd encounter. 2.29 I got "1024x768" by switching CTRL-ALT-KEYPAD"+". How do I make this default? In the section Screen, subsection Display of the XConfig file, there is the line Modes which lists all the resolutions that can be switched to with CTRL-ALT-KEYPAD+ or CTRL-ALT-KEYPAD-. Reorder this line with a text editor. Attention: there are many of these sections, for SVGA, Mono, Accel, AND for your video card AND for different numbers of colors. 2.30 How do I get a pixel depth of 16 or 24 bits? The server seems to start with 8 bits only. Provided your X server supports depths other than 8 (not all do): Start the X server with the option -bpp 16 or -bpp 24. This can be accomplished by passing this option to the startx command as startx -- -bpp 16 for instance. 2.31 What does "SocketINETConnect() can't connect: errno = 65" mean? What does "SocketINETConnect() can't connect: errno = 61" mean? These messages *can* point out a network installation problem, in many cases they are secondary errors, though, and are really caused by a different problem. Nevertheless, you should ensure that your network is setup correctly. Check for other symptoms in your error.log file. 2.32 A "non-recoverable error occurred. The process ended." or a SYS2070 error occurs when I attempt to run an X client. Either one of your X DLLs or the X client executable is defective. Check the presence of a popuplog.os2 file in the root directory of your boot partition; if present it should list the file in error among the register dump. 2.33 Error message "Couldn't open default PEX font file Roman_M" This should no longer happen (report the converse!). 2.34 Error message "Maximum number of clients reached" This should no longer happen (or at least with much more than just 10 clients). 2.35 Error message "Couldn't open compiled keymap file ..." This error message should no longer appear in XFree86/OS2-3.2, unless your XKB settings in XConfig are incorrect. 2.36 Error message "Unable to load font 'fixed'" This points out a problem with the FontPath lines in the XConfig file. You must disable (with a comment # at the beginning of the line) all FontPath lines for font packages you haven't installed. Xf86config will now do this by default during install, but if you add fonts later, you need to edit XConfig manually. BTW: it is not sufficient that just the directory is present. 2.37 Where is this "fixed" font? I haven't seen any file with this name. Fixed is an alias, which is associated with some font in the fonts.alias file in the directory /XFree86/lib/X11/fonts/misc. The font is then associated with a file in the fonts.dir file in the same place. 2.38 How can I add a font package, e.g. the "cyrillic font" set? Unpack it in the correct place, and then manually add a FontPath line in the XConfig file. 2.39 How can I use the OS/2 fonts from the \PSFONTS directory, or other Adobe Type Manager fonts? In general, I found that these fonts, i.e. the .pfb files are compatible to the Type1 font reader built into the server. You would just have to write a fonts.dir file containing the mapping between a file name and the 14-part font specifier (see /XFree86/lib/X11/fonts/*/fonts.dir for all fonts in \PSFONTS. 2.39.1 Are TrueType fonts supported? No. 2.40 XFree86 works fine, but when I try to switch back to the PM screen, the screen (X or PM or both) is corrupted. This turned out as buggy OS/2 video drivers in almost all cases. OS/2 video drivers are supposed to save the complete context (VGA registers and video memory) when a full screen session is entered. Some lousy written video driver doesn't save enough, e.g. only the portion of the video memory that is used by text sessions or the rather limited amount used by the supported WinOS/2 screen resolutions. There is no good solution for the problem, as Video DD writers seem to experiment a lot, which means that an older video driver might have this problem fixed, whereas the latest version may no longer work. Please complain to your card vendor. If they are interested in satisfied customers, they should deal with the problem. Please refer to me and the XFree86 group when you describe the problem. We know enough about the way XFree86 and OS/2 work together to understand that the problem is on the OS/2 video driver side. 2.40 Why does Watchcat screw the screen colors? This is a current bug/limitation of the Xserver. When Watchcat (or any program which uses the popup mechanism in OS/2) is invoked, the current palette is not saved. Screen corruption may also occur. This will only affect pixel depths where a palette is used (4bpp and 8bpp). 2.41 The OS/2 server does not find my configuration files, but I have placed them in the correct locations as for my Unix X servers. XFree86/OS2 stores all configuration files in a common directory. This is X11ROOT:\XFree86\lib\X11, where X11ROOT is an environment variable which contains the drive letter the directory tree is located. The common places like /usr/X11, /usr/X11R6, /usr/XFree86, /etc which are used for XFree86 in various Unix flavors, are not supported to avoid the mess they have caused in the past. It is also there where you should put your Xconfig file, the color database (rgb.txt), the host authorization files (X0.hosts), and various other files. 2.42 I redirect stderr to a file to capture the diagnostic/error messages from the server, but after the video mode gets set, I do not get any more messages. What is going on? After the video mode has been set, stderr gets redirected to a file called xf86os2.log. You can find the rest of the server messages there. 2.43 The server does not start when my TMP directory has a trailing backslash character. Right, this is an oddity. Remove the trailing backslash. BTW: did you run "checkupdate"? 2.44 Some clients complain that they cannot write to the TMP dir. Right, TMP must reside on HPFS. BTW: did you run "checkupdate"? 2.45 When I use xconsole, there is always a warning message in the first line. What is that? You mean the text Warning: process PID=????? is accessing /dev/fastio, right? This is an intentional notification that some process uses the fastio device to perform access to I/O ports. It is also intentional that this message cannot be disabled. As long as the PID is the process ID of the X server, everything is okay. If the PID belongs to another, unknown process, you should seriously ask the author of the program what he/she is doing with your hardware.
2.46 I found that killing the X server or the window manager won't work well to end X11. How can I shutdown X11?
Yes, we know it is a problem, mainly related to signal handling that is not fully compatible to Unix signaling as well as some differences in session semantics. XFree86 is not really intended to be started up and shutdown all the time (this is BTW bad manner of users who were accustomed to have only one program open under Windows, because a second one would fail running out of resources). If you don't need XFree86 for a moment, just leave it running in the background - eventually it will be completely swapped out in the swapfile, and you won't need to bother about it eating up resources).

Part of the problem is that clients started in xinitrc.cmd remain under PM control (i.e. its parent is PM, not xinit, as intended), so when X goes down, it doesn't destroy these clients with it.

Currently the following methods appear to work: pop up the window list (CTRL-ESC) and close the xinitrc.cmd process. If this does not help, close the other remaining X processes in the same way. Alternatively to the close function of the window list, a process kill program (killem, killit, pmkill, etc) or Watchcat should also work.

2.47 Sometimes some X11 process is still around after shutting down. Bug or Feature?
More feature (of OS/2) than bug. See Q 2.46. We'll try to improve this. For now remove the process with a method described in Q 2.46.
2.48 How can I uninstall XFree86/OS2?
You really dare to ask? Ok, if you want to do this: there is nothing special with uninstalling, because there are no INI file entries to be removed.
1. Exclude the driver XF86SUP.SYS from CONFIG.SYS, and if you like, also the environment variables that were set during installation. Attention: some of them are necessary for proper TCP/IP networking.
2. Remove the complete tree \XFree86.
2.49 How can I uninstall specific packages of XFree86/OS2?
You don't like it, do you? Currently there is no way to specifically remove packages, but this is planned for the future. For now, simply list the ZIP archive where the files were coming from and manually remove these files.
2.50 The server does not find my IAK localhost network?
Be sure that the line to be entered in \tcpip\etc\hosts ends with a newline.
2.51 I have added a new font directory, but now the X server complains with the message "Font path component expected". This directory does exist!
You must put the path name behind the FontPath keyword in double quotes (").
2.52 What does the error message "_X11TransOs2OpenClient: Open server pipe \PIPE\X\xf86.0 failed" mean?
This is for the local named pipe communication the same problem as Q 2.31 is for the network connection. It basically means: the server crashed for some reason, and now a client, e.g. xterm cannot connect to the server. The real reason is probably hidden somewhere else in the XConfig file, or some other setup problem (e.g. network configuration).
2.53 X doesn't work for me, is it because I have EMXOPT= -rc in my settings?
This is at least one problem you have: The EMXOPT option -r<driveletter> does not work with XFree86/OS2. Use the TVFS.IFS (Toronto Virtual File System, available via FTP) to workaround the drive letter problem.
2.54 I have EMXOPT=-t in my config.sys, and XFree86/OS2 does not work.
The -t option is incompatible with XFree86/OS2. Since XFree86/OS2 needs a HPFS file system anyway, consider installing the stuff you need this option for on a HPFS disk as well. Or decide what you want: old FAT-stuff or XFree86.
2.55 My system works well when I use it with "ifconfig lo..." (HOSTNAME=localhost), but fails when I launch a SLIP/PPP link to my provider.
Don't use "localhost" or "ifconfig lo" when you are considering a modem or ethernet connection. A server started at the address "localhost" (127.0.0.1) is not visible from the outside.
2.56 My provider gives me a dynamic IP address which changes each time I connect with my modem. If I start XFree86 before, it doesn't work, if I start it afterwards, it will fail when the link gets down. Help!
There is not much that can be done here. A dynamic IP address is, well, "dynamic", and exists only as long as the link exists.

The ugly thing with any dynamic IP address is obvious with any software which wants to connect *to* your host. Normally, it is *you* who initiates a connection, e.g. with your WWW browser, and this is no problem. The problem is that remote hosts must be able to find your host (resp. your X server). There is no solution, except to assign the DISPLAY variable as dynamic as the IP address. Needs some tweaking of the startxx.cmd script.

Try to get a static IP address if possible (if necessary, by begging, bribing, or threatening :-)).

2.57 I tried out the beta version 3.2A, but since it wil expire, I want to use the 3.2 server again. I copied it into the (3.2A) tree and now it no longer works!
XFree86-3.2A is not backward compatible in several ways: an older server won't work in a 3.2A environment, because at least it cannot read the fonts. There may be other incompatibilities.
2.58 Some old apps no longer work in XFree86-3.3.
Yes, unfortunately. This is mainly because of the SECURITY extension which was introduced by X11R6.3. Read X11R6.3.RELNOTES (in XF32doc.zip), section 3.5 ff.
2.59 With my VLB-based S3 card (S3805, #9, etc.) the server does not start up.
Look into the xf86log.os2 file. If it ends with something like "xf86MapVidMem failed", the server does not find the video memory, which is typical with VLB cards. Try adding option "nolinear" or "nomemaccess" to the "Device" section of the XConfig file, or locate the video memory address (some DOS utility from the diagnostic/driver disk coming with the video card might show it) and enter its hex address as "MemBase 0x12345678" to the "Device" section.
2.60 I have a Mach64 PC2TV, and it does not work correctly.
The TV on this card is incompatible with the current X servers. Use the DOS utility from the driver disk to switch it off, and don't connect a TV video signal to the its input. Then the server should accept it.
*2.61 I get a SYS2070 when trying to start some X application.
You have a defective DLL (it is listed in popuplog.os2), or more likely, there is another X11 or Xt dll, e.g. from eXceed or PMX left in your LIBPATH.
*2.62 My XFree86 started well, but after a while it won't react to mouse or keyboard events any longer. But I haven't done anything (e.g. over night).
You probably have a PM screensaver running, or another application which attaches to the keyboard driver. Disable this; some of these apps are notorious to hang up XFree86.
*2.63 My XFree86 does not start up. But I have correctly opened a fullscreen sesseion and entered "startx" there, as the docs said.
Read the docs again. Nothing is said about a FS session there. Run 'startx' from a PM CMD window.

## 3. Compatibility, Features, Tips and Tricks

3.1 Can I ...?
3.1.1 ... run PM and WPS programs?
YES, but not on the X11 desktop yet.
3.1.2 ... run DOS programs?
YES, in another fullscreen or PM windows session.
3.1.3 ... run Windows programs?
YES, in a fullscreen DOS session or seamless under PM. Someone volunteering to port Wine?
3.1.3.1 ... run Win95 programs?
You are kidding. Go back playing with your LEGO toys.
3.1.3.2 ... run DOOM or QUAKE?
By default, the answer is NO.
3.1.4 ... exchange data between PM and X11?
There is some experimental clipboard tool on the ported software page. See Q 1.15.
3.2 Yes, but ...
3.2.1 the commercial Xserver implementations appear to be able to allow all the above things?
The commercial X implementations are based on the PM desktop, and can therefore use certain facilities available there. The price you pay for this is not just financial, but mainly speed. And no, the commercial X server implementations do not allow all these things; read their docs, not their ad flyers.
3.3 Are the XFree86/OS2 DLLs compatible to the IBM PMX or Exceed ones?
No, but there may exist name clashes. Read Q 3.6 of using XFree86 with other servers.
3.4 Will you make them compatible to IBM PMX or Exceed (...so that I won't have to buy their development kits...)?
No. It is not possible. PMX is outdated X11R5, and Exceed is just X11R6, but not X11R6.1. Furthermore, both vendors on one hand and I on the other hand have modified the X11 libraries in certain ways, so even with the same naming conventions and numbering of API functions we cannot reach plug-in compatibility.
3.5 Can PMX and other X clients connect to the XFree86/OS2 server?
Yes, this works without problems. Note that if a XFree86 client connects to a PMX server, be aware that PMX is X11R5, and XFree86 is X11R6, so certain things won't work which require R6 features or XFree86 extensions. As an example, xvidtune won't work with PMX or Exceed, because it uses a specific XFree86 extension of the X server.
3.6 Can you use PMX and XFree86 simultaneously?
Yes, just make sure you avoid name clashes. PMX installs files in \TCPIP\DLL and \TCPIP\BIN which cause name clashes and obscure crashes of XFree86 X clients, so to run XFree86 with an installed PMX, you must have \XFree86\bin before \TCPIP\BIN in your PATH, and \XFree86\lib before \TCPIP\DLL. Read about BEGINLIBPATH in your OS/2 command reference manual.

You should run the PMX server on display :0 and the XFree86 one on display :1 (attention: the startx.cmd has this coded to :0 by default).

3.7.1 How can I display remote clients on XFree86/OS2, e.g. from a Linux system?
You must have a network connection to Linux, this is obvious. OS/2 must run the X server, the remote system may, buy doesn't need to run a server. You must give the remote system permission to display windows on the OS/2 server, by executing
xhost +remotesystemname
on the OS/2 system (enter this in a OS/2 CMD window, add this to the startx.cmd file, or add it to the X0.hosts file). You must tell the remote clients to use the OS/2 X server as a display by starting them with the standard -display option, e.g.
xterm -display os2systemname:0.0
(you can also set the global environment variable
DISPLAY=os2systemname:0.0
on the remote host).
3.7.2 How can I display OS/2 X clients on a remote system?
See Q 3.7.1, just vice versa.
3.8 How can I enable authorization for host foo.edu without using xhost?
Create the file X0.hosts in \XFree86\lib\X11. To enable connections from a certain host, add in a line containing inet:hostname to the file. For example, your file may look like this:
 inet:foo.edu inet:friendly.host.edu ..
Note that the X0 refers to the zero in the display name os2systemname:0, i.e. in the case of Q 3.6 this would become a X1.hosts then.
3.9 How can I connect to a remote XDMCP host?
This is needed in some university and corporate environments. You can start the X server with the option -query xdmcphostname for this.
3.10 Where is XDM? There is only a man page for it.
Yes, it is not yet ported; certain infrastructure is still missing.
3.11 Can I use another shell like 'bash' in place of CMD.EXE in an xterm?
Most shells are subtly incompatible with the PTY mechanism used in xterm. A symptom may be that they won't work either if you redirect console I/O to a COM terminal which should be possible. bash is such an incompatible shell. See also Q 3.12 and Q 3.13.

Meanwhile, there are special ports of tcsh and ksh which work in an xterm.

3.12 I use 4OS/2 (or some other shell) as my shell. Will it work in xterms?
4OS2 has a number of misfeatures, politely spoken, in an xterm. We attempt to fix this in the future. For now, don't use it in an an xterm. If 4OS2 or another shell is in your OS2_SHELL or SHELL variable, please add an environment variable named X11SHELL to point to a valid CMD.EXE path, e.g.
SET X11SHELL=D:\OS2\CMD.EXE
in your CONFIG.SYS. This will override the OS2_SHELL or SHELL setting which is used otherwise. Q 3.13. So actually FTP does NOT work.
3.15 Is there a replacement for telnet which works?
Get gnunet10.zip from one of the OS/2 FTP servers. This contains a telnet and a ftp which works in an xterm.

You may try out x3270, available from the ported software WWW page (Q 1.15).

3.16 Will there be a PM-based Xserver, like PMX, in XFree86 in the future?
This was discussed, and there might be some work in progress, but don't base your time critical software on this.
3.17 Does the server support OS/2 fonts? How do I set those up?
See Q 2.39.
3.18 How can I run other apps initially?
You can configure the file X11ROOT:\XFree86\lib\x11\xinit\xinitrc.cmd. This is an editable REXX script. Usually you will only modify the section "start some nice programs". You should use start/min to run the command and put all arguments in '' or "", because REXX may come to the wrong conclusion to interpret certain commands. The last command before the exit must be started without the start/min. If you kill this program, X11 will shutdown. Usually, this is configured as twm. So if you select exit on the root menu of twm, it will shutdown XFree86/OS2. Please read Q 2.46 about some gotcha.
3.19 Does XFree86/OS2 support LBX (low bandwidth X)?
The current version XFree86-3.3 which is based on X11R6.3 (Broadway) has the LBX (low bandwidth X protocol) again included. Unfortunately, we haven't got it running in OS/2 in 3.3 yet. Maybe in a future version.

You might try out DXPC as an alternative, though.

3.20 Can it be run over modem lines anyway?
Yes, besides the speed problem this is possible provided you have a correctly configured SLIP or PPP connection using TCP/IP. Pseudo-SLIP, such as term, or kermit does not work (just before someone asks). But even with 28,8K it is no fun without packet compression (see also Q 2.15).
3.21 Can I use the XF86Config file from Linux or *BSD?
Yes, if it is a 3.1.2[D-G] XF86Config file, and if you change the mouse protocol entry to OSMOUSE and remove the mouse device line. Note the config file is named XConfig in OS/2, not XF86Config.
3.22 I heard about special features in an xterm...
Yes, there are line editor functions built into the XF86SUP.SYS driver which you will mainly encounter in the xterm. The following functions are available currently:
• CRSR<-, CTRL-B: back one char
• CRSR->, CTRL-F: forward one char
• CTRL-H, DEL<-: Delete char to the left
• CTRL-U: clear entire line buffer
• CTRL-A: cursor to beginning of line
• CTRL-E: cursor to end of line
• CTRL-K: kill to end of line
• CTRL-V: Quote next char, i.e. next keystroke is added to the buffer without interpretation
• DELETE (keypad): Delete char on cursor position
• INSERT: Toggle insert mode
• CRSR ^, CRSR v: retrieve last command (history feature)
3.23 But these features of A 3.22 do not work for me?
You have an old version of XF86SUP.SYS installed. You need version 1.432 or later. A usable version is always in the file *BASE.ZIP in the XFree86 distribution, even if a XF86S*.ZIP containing the driver source is not available. The XF86SUP.SYS version 1.420 from 3.1.2D does not have all features.
3.24 The "history feature" described in Q 3.23 has some rough edges.
Right, there are still a few bugs in XF86SUP.SYS. Will be fixed sometime in the future. It should not crash, at least.
3.25 When I switch from PM to X, the first line I enter in an xterm results in garbage.
3.26 My software needs three buttons, but I have only a 2 button mouse.
Enable the lines Emulate3Buttons and Emulate3Timeout 50 in your XConfig file. The third button is then activated by pressing both buttons simultaneously.
3.27 Can I swap the mouse buttons for a "lefthanded mouse"?
Yes, use the command
xmodmap -e "pointer = 3 2 1"
on a command line or in the xinitrc file or make an Xmodmap file for that purpose.
3.28 My national keyboard does not work, it has the US mapping, e.g. 'y' and 'z' swapped on German keyboards.
You can use XKB to select a German keyboard layout. Select this in xf86config. You can also use a .Xmodmap file. There are sample files in /XFree86/lib/X11/xmodmap/Xmodmap.* for various countries. If you write a new one which is not yet in the distribution, please send it to me (
Holger.Veit@gmd.de
) for inclusion into the next release.
3.29 Can I use the xmodmap file from Linux or *BSD?
Yes.
3.30 Can I use the one that I use at work for the SGI, HP, Sun, AIX machine?
Likely not, this is the problem with Xmodmap files: they depend on the X server's idea how to assign keyboard (scan) codes to keys.
3.31
removed
3.32 How do I configure xman?
Xman uses the following conventions:
• It searches for man pages in the directories specified in the MANPATH environment variable. This is a semicolon (;) separated list of directories of the structure
 drive:/dir/.../man1 /man2 /man3 ...  What you have to specify actually is the directory path except the last level, such as in SET MANPATH=d:/XFree86/man;Q:/EMX/man;F:/other/mans/man  Not all chapters man1-mann need to be existent. If you have installed XF32man.zip, you can see the structure under \XFree86\man.
• Preformatted pages are compressed with gzip (.gz extension). Such preformatted pages are produced from unformatted pages with
tbl file.man | eqn | groff -man | gzip >file.gz
• Unformatted pages are not compressed and have the extension corresponding to the chapter number of the man directory, e.g. in \XFree86\man\man1 this would be 1, like grep.1.
• If you have unformatted man pages, you must have the groff utilities installed (groff, eqn, tbl).
• If you use only preformatted manpages, you need cat and gzip. Both utilities are available from hobbes.nmsu.edu.
3.33 Can I use something like "rsh" to launch remote X apps?
Yes, the rsh.exe from Warp 4 works fine (\tcpip\bin). I haven't tested other version, but given the compatibility you can also give rsh in TCP/IP and Warp Connect a chance. Run in an xterm
start/min/n rsh remotehostname progname -display localhostname:0
e.g.
start/min/n rsh office-unix xterm -display homepc:0
to get an xterm from your workstation at work to your home PC. Note the thing with ~/.rhosts at your workstation applies! RTF-Unix-M!
3.34 I get the error message "Cannot convert string "dt-application..." to type FontStruct. Help!
You want to display clients from a Motif/CDE server. You must copy the special CDE fonts (including fonts.dir and fonts.alias) to your XFree86/OS2 system, preferably into a directory below /XFree86/lib/X11/fonts, and add this directory to the FontPath in the XConfig file.
3.35 What does "Cannot convert string "*xyzzy*-*-*-*...." to type FontStruct" mean?
It means your application needs a font which is not installed, and has not accepted a suitable replacement. Locate this font at the remote host, and install it in a XFree86/OS2 directory. Get the corresponding description from the fonts.dir file which is in the same directory as that font, and put it into a fonts.dir file at the PC (better: copy all fonts there, including the fonts.dir and fonts.aliases, into a local directory). Add the directory to the FontPath in the XConfig file.
3.36 I want to display a client from a Sun OpenWindows system, but it does not work.
There are two reasons why this can typically fail.
1. Your application uses special OpenWindows fonts. OW can use Type3 fonts and special bitmap fonts, which are unsupported by XFree86 servers. The only workaround is to set up or have your Sun sysop set up a font server (xfs) and add it to the FontPath in your XConfig file.
2. The second reason is described in Q 3.39.
3.37 Can I connect to a Motif/CDE system?
Yes, this is possible, and generally works like connecting to an XDMCP host. See Q 3.34 how to install the necessary fonts for this.
3.38 A remote application gives me the error "GLX server extension missing". How can I run this application?
This application is likely running on a remote SGI (Silicon Graphics) machine. If you have the source code, try to compile it and link it with the "Mesa" library (see ported software page).

If you don't have any source code, it won't work. The application complains that the XFree86 server does not support the OpenGL 3D extension.

3.39 A remote application gives the error "DPS server extension missing". How can I run the application?
This application is likely running on a remote Sun with OpenWindows. DPS means "Display Postscript" which does not exist in the XFree86 server. This application cannot run.
3.40 Will there be native GLX (OpenGL) support in XFree86 in the future?
Maybe. There is a free implementation of the GLX protocol; it just needs a number of people to implement the 3D intrinsic on top of them. "Mr. Mesa" has AFAIK promised his help, but don't rely on OpenGL within the next time.
3.41 Will there be native DPS (Display Postscript) support in XFree86 in the future?
Likely no. So far there is no freely available Display Postscript extension available. Don't even think that ghostscript might be suitable as a DPS module for the server; others more clever than you have already considered that and dropped the idea.
3.42 What is the Xprt server good for?
Frankly, I don't know. It is supposed to be an X server which will render a static image to a printer device, and there are a few of them supported (LJ4, PS, Sun SparcPrinter), but X11R6.3 does not contain any sample program to try it out. Rumor is that Motif/CDE has an application which uses it :-(
3.43 Why aren't the fonts compressed with gzip, but with the compress program which is not so good?
Until 3.2A, this was a copyright issue, beginning with the beta version 3.2A, the servers understand gzip'd fonts.
3.44 How do I set the server to run on another display, as required in FAQ on PMX (Q 3.6)?
Pass the argument ":1" to xinit, such as in
 xinit -- :1
If you use startx.cmd to run the server, replace the :0 with :1 there. If you start the X server directly, e.g. for xdm, pass the argument :1 to it as well. Note that most remote xdm servers listen on :0, though.
3.45 Is it possible to run multiple X servers?
This is not supported on XFree86/OS2.
3.46 Is it possible to run the X server with multiple video cards?
In theory, the VGA16 server allows a single color VGA and a monochrome hercules card, but only in standard non-SVGA resolutions.

In practice, this support is broken since version 3.2, and never tested in XFree86/OS2. A future release will offer this and other combinations again.

3.47 How to get color mode in xterm?
You need to start the xterm with -cm. This will enable the color ESC sequences. To get color resources used, you also have to add
	#ifdef COLOR
*customization: -color
#endif

to the %HOME%/.Xdefaults file and run xrdb with the option -DCOLOR.

## 4. Programming and Porting of Software

4.1 I have some cool X fonts from other X11 systems. How do I convert them to the ".pcz" format?
The ".pcz" is exactly the same as the ".pcf.Z" format known from Unix. Just rename your files, copy them to the font directories and run the mkfontdir utility.
4.2 Where is the contrib kit? Should I port it?
Parts of it are on the ported software page (see Q 1.15).
4.3 I have found a cool X utility which I want to port. How should I proceed?
Normally, with X utilities, you get an Imakefile. Simply proceed as if you were under Unix. Run xmkmf -a to compile. Read the programming section on special issues.
*4.4 Is there a utility for...?
If you don't find it in the the distribution, or on the ported software page (Q 1.15)

it is possible not there. Ask whether someone is already porting it, e.g. in the newsgroup comp.os.os2.programmer.porting; if not, then try it yourself. Applications don't appear magically, unless someone really ports them. So why not YOU?

4.5 Are there games...?
See Q 4.4.
4.6 Will you port XFree86 to Windows, NT, Win95?
NEVER!
4.7.1 Is there a better window manager than twm?
There are a number of them, e.g. ctwm, fvwm, fvwm95, afterstep, available through the ported software web page (see Q 1.15).
4.7.2 Why is FVWM (Q 4.7.1) not the default window manager? It has many advantages, for instance "...."
It is available on the ported page (Q 1.15), so if you want it, get it. The distribution reflects what is in the core part of X11R6 which offers twm by default. There is more stuff that would be worth becoming part of the standard, such as xv, but ...well, it isn't...
4.8 Do you plan to port Motif?
Sigh. The problem with Motif is that it is owned by a consortium that collects money from licensing Motif. I have a copy of the Motif source code and compiling it is not too difficult. Try it out yourself if you have also access to it.

The problem then is that I cannot give out the code or put it on an FTP server, not even diffs. I don't have the time nor resources to open a business that sells licenses of the libraries to anyone interested and collect the royalties to the Motif Open Software Consortium. Initially, I thought I would simply make binaries, encrypt them and put them on a FTP server. People or institutions that give me a proof of a valid Motif license would then get the decryption key. I was told, however, that this scheme would be juridically suspicious.

So, this may be a point where companies, for instance, who are already involved in the Motif business could jump in, and offer the missing link. I have neither interest nor time to manage this.

There is also the LessTif project to build a free Motif clone. Look at the ported software page (Q 1.15).

4.9 XFree86/OS2 is free, but copyrighted software. Is commercial software based on this allowed or welcome?
XFree86/OS2 requires the use of the GNU gcc compiler. There may be certain restrictions and side effects involved concerning the GPL and the use of certain libraries. I won't discuss this here, but I would have no concerns regarding this.

If you aren't concerned either: Yes, commercial applications are allowed and welcome. THIS IS YOUR CHANCE!

*4.10 Will there be a version for the PowerPC?
4.11 Are there static versions of the X libraries?
Yes, they are separeately available in the package 312FSLIB.ZIP. The libraries have been renamed to *_s.a to distinguish from the DLL forwarder libraries.
4.12 Will there be singlethreaded libs?
No. gcc is free software, and most stuff written for it is also freely available. Recompile any singlethreaded libs you want to link to a X application.
4.13 I want to have support for a commercial compiler, because I do not want to use gcc.
You want a version for a commercial compiler? No problem: write one.
4.14 Will the DLLs link with Watcom, Borland, Cset, VAC++, Metaware?
In theory, yes; the calling convention of the API functions is _System. However, there may be a large number of EMXisms in them which may prevent running. You need the EMX runtime DLLs anyway.
4.15 Why must I use GNU make? I am accustomed to XYZmake which has very nice features.
Well, Imakefiles also have nice features, particularly that they expand to Makefiles that may have several thousand lines. I have tested numerous make programs: all but GNU make failed this benchmark somehow. You are accustomed to XYZmake; let's say, imake is accustomed to GNU make.
4.16 Are there special porting considerations?
Some things occur again and again:
• Use the Imakefile and do not try to handcraft or patch a Makefile. Things will go wrong!
• Read about the macros ProgramTargetName() and LibraryTargetName() and use them in the Imakefile, rather than hacking .exe and .lib names. The above will work, hacking won't.
• Compile and link everything with the -Zmtd option, the libraries are multithreaded by intention.
• Use #ifdef OS2Architecture in an Imakefile to specify an OS/2 dependent part.
• In source or header files, exclusively use #ifdef __EMX__ for OS/2 EMX specific parts. Don't use other symbols, such as "OS2", "__OS2__", "i386", "__GNUC__", or "__32BIT__". Use only #ifdef, #else, #endif, not #elif, as some other compilers don't support this.
• If you think there is a bug in the provided X11 include files, you are doing something wrong.
• Many Imakefiles silently assume they are running under Unix, and therefore have program and library names hardcoded in. Use the LibraryTargetName and ProgramTargetName macros to wrap libs and programs, such as in
 EXTRA_LIBRARIES = ../Xpmlib/LibraryTargetName(Xpm) PROGRAMS = ProgramTargetName(xterm) ProgramTargetName(resize)
• Unix does not have drive letters, so a file (resources, fonts, config, etc.) path starts with '/' normally. XFree86 is located in a tree below %X11ROOT%\XFree86\... To prepend the X11ROOT part to a file path, a special function named __XOS2RedirRoot exists which you are supposed to use in these cases rather than an insane own solution. The prototype of this function is: const char* __XOS2RedirRoot(const char* pathname);
• Don't reinvent the wheel concerning environment variables. Use the ones that are described in the installation file README.OS2, rather than invent yet another variable name for USERs, HOME directories, TMP directories, etc.
• Although the rule was broken multiple times already in XFree86/OS2, try to make your filenames comply with the 8.3 file name convention, so that users may relocate them to elsewhere.
• The libraries are multithreaded EMX libs for certain reasons. This causes a few side effects, particularly if fork() is involved. I got fork running in several situations, but it is no fun. Try to rewrite this code where possible (well-meant advice).
• Many software from Unix assumes that lines have '\n' as a line delimiter. The X applications are linked with \emx\lib\binmode.o. Don't change this, some code relies on this. Rather rewrite the code to accept \r\n as a line delimiter.
• You may use all Dos* API functions, as long as they don't conflict with EMX somehow (e.g. _beginthread vs. DosCreateThread). Stay away from Kbd*, Mou*, Vio* calls - none of those will do what you expect, but you can severely influence the operation of the X11 system.
• If you must do port I/O, use the functions from xf86sup.sys for this; this driver is there anyway, so why not take advantage of it? Common precautions for directly accessing hardware apply.
• Code that relies on Unix security, job control, tty/pty handling, needs major rewriting. In most cases, it is easier to make a separate file for OS/2 rather than clutter the original one with #ifdef clauses.
• X11 executables must be linked as WINDOWCOMPAT and EXETYPE OS2 (the only exceptions are the X servers and xinit).
• XFree86/OS2 by default does not have sh, so rewrite Unix shell scripts to REXX cmd files. Don't rely on others to install sh or other tools just for you.
• If you want to contribute other software, please follow these guidelines for making your distribution zip file:
• Use OS/2 zip for packing, even if some foobar packer gives you 1 % better compression. Don't use tar and gzip.
• If you use an Imakefile (which is common practice with X apps), set the X11ROOT variable to another letter than the one where you have your X11 tree. This makes it easier for you to combine all necessary files into a distribution.
• Use exactly the same tree structure as XFree86/OS2 is using Don't reinvent wheels and install to /usr/local/bin or similar, or rely on users to edit CONFIG.SYS to change the PATH or LIBPATH.
• The last section means that the directories in your archive should be rooted to /XFree86.
• Put sources in a separate archive, not in the binary release, and root this archive at /XFree86/src/PACKAGENAME, e.g. /XFree86/src/xfoo-0.42.
• The reason for all that is that I want to engage Software Installer in the future to improve the installation procedure. This should integrate all contribution packages as well. I'll reject non-conforming contributions without warning.
4.17 'make' does not work.
Make is a REXX cmd script which is installed in \XFree86\bin. This script sets certain important variables and then calls the x11make.exe program (which is gnumake 3.71) which is known to work. You have some other make.cmd or make.exe somewhere in the path. If you do not remove or rename this, you won't be able to compile X11 code successfully.
4.18 When I start an application I have compiled myself, the speaker beeps.
Use an Imakefile. You have not passed the correct options to gcc. The most simple Imakefile to compile a client with just one source file foo.c looks like this:
======snip======================== SimpleProgramTarget(foo) ======snip========================
which will produce about 600 lines of Makefile.
4.19 How do I make a XFree86 compliant DLL?
Since the XFree86 source code is now available, you will find plenty of examples how I did this there.

Note that you still need some secondary literature on special features of Imakefile rules. A recommended book on Imakefiles is available from O'Reilly&Assoc publ (Using imake). Ask in your bookstore.

4.20 How do you make the packages of ported software?
I use rcs (available from hobbes.nmsu.edu) to make copies of each file before I modify it the first time. Later I use the modified files to produce context diff files using rcsdiff. When I managed to get some code working, I run make install, and make install.man which will usually install all necessary files in the right place. When I think the code is working correctly, I do the following: I change the X11ROOT variable in a CMD window to something else, e.g. from X11ROOT=d: (which it is on my system by default) to X11ROOT=c:, and run make install install.man again. This will build the tree of files again on C: where I can easily pack it with the zip utility after adding README files and diff files manually.
4.21 The new Imake config files now contain also "Motif" and "CDE" rule and template files. Does this mean that this stuff will be available soon for free?
No, it doesn't. These files were added in X11R6.3 to better integrate Motif and CDE into the system, but this does not make this software public domain (or whatever you want to call that).
4.22 I have ported a program, but it apparently needs the DISPLAY hardcoded into XOpenDisplay, otherwise it does not work. There is apparently a bug in X11.DLL left.
No, this isn't a bug. You must compile your code with "-Zmtd -D__ST_MT_ERRNO__" options, otherwise the getenv() in X11.DLL will fail, and you get infact this effect. Use an Imakefile, which will take care for this.
4.23 I have an usupported video card, plenty of time, enough programming skills. Can I become an XFree86 developer?
You help is greatly appreciated. See Q 2.4.
4.24 I have found a wonderful extension for the X server which will give it the super feature XYZZY. And it is freely available under the GNU copyright!
STOP! XFree86 does not just develop for Linux freeware users, but also has serious commercial customers, and important contacts to hardware vendors. XFree86 will NEVER EVER accept code under the GNU copyright in the own code base. There is much more behind XFree86 than you expect which won't allow such kidding with GNU style copyrighting. Don't attempt to discuss or argue about this with anyone from XFree86 in the hope to persuade us. There won't be any chance; accept it as it is, or p**s off! Which is also the answer everyone will get when attempting to do so (and likely also in this tone).

For own software to run under XFree86, this won't apply, of course.

The MIT copyright under which XFree86 is distributed is less restrictive anyway.

## 5. Reported working hardware

The following condensed reports were extracted from numerous email conversations, for your reference. I have anonymized them to protect email conversation and people (note: I won't make the names and email addresses available to anyone else even if some company might find such a list attractive for advertising). I haven't verified many of them of them personally, but you can draw a conclusion about hardware which is in use (rumor was that a P100 with 32MB were not sufficient). It may also serve as a reference for video card manufacturers to understand where the market is with OS/2: If you don't care about OS/2 and X11, then high-end users as the ones interested in both OS/2 and X11 will choose better supported products. IMHO, the list below gives a clear answer.

Thanks to all people who responded and now recognize their system mentioned here.

• 486-DX2/66 24MB RAM, Microchannel, XGA-2, Warp blue, AGX server, 1024x768
• P75, ATI Mach64 XPression, TCP/IP 2.0 with CSDs, Fixpack 17, Warp red
• ATI Mach64 4MB VRAM, Warp Connect FP 17, 800x600, PM 1280x1024
• 486-66 20MB, Diamond Stealth 64 DRAM 2MB (S3 864)
• 486-66 16MB, CirrusLogic GD-5430, SVGA server, Warp Red FP17
• P100, Triton, 16MB RAM, ATI Mach64 Expression AT&T20C496 RAMDAC Warp Fullpack FP17
• 486-50, Mach32 ISA
• 486-66, 16MB, Cirrus 5428 VLB, SVGA server, 1024x768 @ 35.5khz
• Gateway 2000 P120, 40MB, ATI Winturbo, 1024x768x8
• Shuttle HOT-433, 486-80, Mach64
• 486-66, 24MB, Cirrus 5434 2MB, SVGA server, Warp Connect FP17
• P60, 32MB, ATI Mach64 Expression PCI 2MB, Warp Connect
• 486-66, 16MB, #9 GXE64 Pro VLB, S3 Server, Warp Red FP 17
• Dell P90, #9GXE Pro, S3 Server
• 486dx4/100, 16MB, miro Crystal 12SD Trio32, S3 server, Warp Connect
• 486-66, 32MB, SPEA Mirage P64 VLB 2MB, Trio64, S3 Server, Warp FP17, TCP/IP 2.0
• 486-66, 32MB, CLGD5426
• P75, 16MB, Matrox Millenium, VGA16 640x480, Warp Red, FreeTCP
• P90, 16MB, Mach64, Warp red, FP5, 640x400
• 486-66, 20MB, Diamond Viper, Warp red, FP17
• P100, 32MB, S3 864, Warp red, FP17
• - Orchid Fahrenheit S3 864, S3 and Mono Server.
• IBM PS 6384, 486SX/33, S3 805/ATT C491 RAMDAC, 1024x768x8
• 486DX33, 16MB, ATI Graphics Vantage, Mach8 server, Warp blue
• Cyrix 486DLC-40(386 board), ATI Graphics Ultra, Mach8, Warp red FP17, FreeTCP
• 486DX4/?, 16MB, S3 805 VL-41, Warp
• 486-66, 16MB, ATI Mach64 2MB, Warp red
• Dell Dimension P100c, #9 GXE64, Trio64, 2MB DRAM
• - STB Powergraph 64 PCI, S3 Trio64V+, rev 531
• P90, 24MB, Graphics Pro Turbo, Mach64 Server, Warp Connect FP17
• 486DX33, ET4000 ISA, SVGA server, Warp red
• Gateway 2000 486-66, 24MB, ATI Graphics Ultra Pro, Mach32, Warp red
• 486-66 16MB, Cirrus Logic CLGD5426, SVGA Server, Connect FP17
• P90, 32MB, ET4000/W32p with STG1700 RAMDAC
• 486DX50, 16MB, ET4000 VLB, Connect FP17
• 486-66, 20MB, Genoa Phantom 64, S3 864, 2MB
• 486-100, 20MB, Cirrus Clogic VLB 5428, Connect FP17
• 486-66, 16MB, Hercules Dynamite ET4000/W32p rev A 2MB, Connect FP17
• P100, 32MB, ELSA 2000 AVI PCI, 4MB, S3 Server, Connect FP 17
• 486-80, 20MB, Graphics Ultra Pro, Mach32 2MB, Connect
• P90, 16MB, Diamond Stealth Video DRAM, S3 server, Connect
• P120, 32MB, ATI Mach64, 2MB
• 486DX33, Diamond Speedstar plus, SVGA server, Warp red, FP17
• - Diamond Stealth 64VLB 1MB DRAM, Warp red FP17, FreeTCP
• 486DX2-?, 20MB, Graphics Pro Turbo VLB, 4MB, Mach64, Warp red
• 486DX33, 16MB, ET4000, SVGA server, Warp red FP17
• P90, 32MB, SPEA Mirage P64 PCI, 2MB, S3 server, Warpserver beta1
• 486-66, 16MB, Genoa 8500 VL, CL5426, 1074x768x8, Warp red, FP17
• P166, 48MB, ATI Mach64 4MB
• IBM Thinkpad 370C, WD90C24, SVGA server, 640x480x8
• - Cardex Challenger ET4000/W32p VLB, Warp red, FP17

## 6. Bugs

Is there information about bugs and will there be "fixpacks"?
Yes, the most recent information about bugs will be available via http://set.gmd.de/~veit/os2/xf86bugs.html (sometimes updated every hour or day). The HTML files linked in this WWW tree are available through FTP as well: set.gmd.de /pub/misc/XFree86OS2/html/* Fixes that become available are at /pub/misc/XFree86OS2/fixes/*.
Some program does not read its resources, fonts, help files, or other files correctly.
(3.1.2D) This is a bug and is related to the effect that the X11 came from Unix with a single root-based file system, in contrast to OS/2 which uses drive letters. There are numerous locations where such file paths exist, and each location needs prepending a drive letter (see Q 4.16). Try the following: run the X server from the same drive your XFree86 tree is on; if the problem disappears, you have found yet another location we forgot to change. Send us a detailed bug report.

Another source of problems are files which contain CR-LF as a line delimiter. We have to fix this the hard way unfortunately; for well-defined reasons programs are linked with \emx\lib\binmode.o. You might try to convert offending files to the Unix convention with the program \XFree86\lib\X11\etc\fixcrlf.exe.
fixcrlf filename
This will convert the file in place. Never apply this program to executables, fontfiles or other binaries. We need a bug report for the program anyway.

Some Imakefiles won't work.
Not all Imake rules have been converted, only those which are really in use for rebuilding the X11R6 code. This should cover the majority of common X applications. If you find a rule which fails (indicator is that there is no replacement in os2.rules or os2Lib.rules) report it as a bug. It remains your problem (you should contact and flame the author for dirty hacks), if some Imakefile contains Unixisms, such as sh command sequences.
XDM is missing.
It needs some prerequisites for porting.
Some code from the ported software page is buggy.
Maybe. Bugs are in the responsibility of the person who ported it. Send a bug report this person.
"xterm -e commandname" does not work as expected.
If commandname is CMD.EXE, it works, but if it is for instance ls only a window is opened, but no output is generated.