Introduction ------------ I am not very experienced with Linux nor do I wish to become more experienced. I only want to learn enough to deal with any issues affecting roZetta. According to Wikipedia there are over 600 Linux distributions and DistroWatch.com says there are 2000+ versions of Linux & BSB so this is not simple. http://en.wikipedia.org/wiki/List_of_Linux_distributions http://distrowatch.com/ I have tested under Ubuntu, Kubuntu, Xubuntu, Fedora, Debian, Mandriva, Mint & PCLinuxOS. Most of which are listed among the most popular distros and all of which I have on swappable HDDs and update as new versions are released. I am unable to persuade OpenSUSE to cooperate - I cannot read from a USB disk and a compiled version of roZetta will not launch. I am willing to test roZetta on any distribution that will run on my machine using a LiveCD provided by users. OSDisc.com has LiveCDs for many distributions for about $2 each. Under a LiveCD version, I cannot test support for serial ports beyond the default four supported by the kernel. I have used default fonts throughout (except for a few cases where a monospaced font was necessary). The biggest problem is that there is no standardized way that distributions handle the default fonts and the related issues of button (and other widget) shapes and sizes. For cases where I cannot get a LiveCD to run on my hardware, if you send me a screenshot illustrating a problem, I will try to address it. You may be able to address these issues yourself, using the trial version of Purebasic then sending me your revised code snippets (which I'll incorporate if they do not adversely affect other distributions) or you can buy Purebasic for $99 and recompile the source with your own preferences. I will release the source once it is reasonably stable. Multiport serial boards ----------------------- By default the kernel only supports 2 or 4 hardware serial ports but can support 16. If you have a multiport board, you can quickly exceed the default limit. Adding... nr_uarts=xx or 8250.nr_uarts=xx to the kernel command line will increase the number of ports supported. On some distributions, xx needs to be the actual total of hardware UARTs (excluding USB-serial adapters and TCP/IP-serial ports) while on others, xx can exceed the total. The safest route is to use the actual number. There are some distros where this command line parameter will not work (e.g. Mandriva, PCLinuxOS). There are methods for increasing the number of ports by recompiling the kernel but this is well above my paygrade. See... http://www.linux.org/docs/ldp/howto/Serial-HOWTO.html Serial Port Permissions ----------------------- Fedora and Mandriva are the only distros I've found that needed this - YMMV. As root: # usermod -G dialout dave The user dave will need to log out and back in to get the new group permission which will persist thereafter. The group name may be something other than 'dialout'. Use: $ ls -l /dev/ttyS0 (/dev/ttyS0 must be a valid port) which will give something like... crw-rw---- 1 root group_name 4, 64 Jan 23 23:38 /dev/ttyS0 where the group_name after root (in my case, 'dialout') is what you need. Enumerating Serial Ports ------------------------ roZetta attempts to enumerate all of the available serial ports detected by the kernel. However, there is no standardization on directories used nor in how various hardware is reported, making this difficult. Users can edit the user.prf file to specify search directories and search patterns. [user] ;month names used in log filenames - CSV months = Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec ;extended dim default xtd = iPLC ;preset dim default psd = uPLC ;wait (mSec) for ACK/NAK when downloading firmware wait = 250 ;directories to search for serial ports - CSV dirs = /dev ;serial port seach patterns - CSV patterns = ttyS*,ttyU*,ttyM*,ttyA*,ttyE*,ttyD* ; populate 'ports = ' if enumeration fails - CSV ; ports = /dev/ttyS0,/dev/ttyUSB0,/dev/ttyUSB1 The user can override the automatic serial port enumeration by editing the ports key in the user.prf file. Remove the semicolon to uncomment 'ports =' and edit the device list to reflect your system. USB-serial ports can be ephemeral. For example, if you have /dev/ttyUSB0 & /dev/ttyUSB1 and remove /dev/ttyUSB0, on the next boot, /dev/ttyUSB1 will become /dev/ttyUSB0. Virtual serial ports used with TCP/IP-serial adapters may use different terminology than ttySxx, install to directories other than /dev and require recompiling the kernel. roZetta will enumerate them if the user defines the directories and search patterns. Serial Port Locking ------------------- The kernel does not automatically block other apps from opening a serial port that is already in use. There are some methods that attempt to deal with this but since they will not guarantee exclusive use of the port they appear to be far more trouble than they are worth. See the discussion of LOCK files in... http://www.linux.org/docs/ldp/howto/Serial-HOWTO.html roZetta makes no attempt to check for LOCK files nor does it create its own LOCK file. Users can always define the port(s) available in the user.prf file if this creates a problem.