Friday, 4 December 2015

Cirque Wave Keyboard GKB330 → Prolific PL-2303 → USB → openSUSE /dev/ttyUSB0

I have an old ergonomic Wave Keyboard from Cirque, ca. 1998, 1590 g light, which  I wanted to use at my PC. Therefore I bought an serial → USB adaptor.
Cirque Wave Keyboard GKB330
USB 2.0 to Serial RS232 DB9 9Pin Adapter
So the PS2 connector for the keyboard part goes into the PS2 from the PC and the serial connector for the Glidepoint Technology touchpad goes to the adaptor, which is plugged into an USB 2 port.
Under Windows this was to get the touchpad working. The CD that came with the adaptor was broken but it was easy to find a driver for the Prolific PL-2303 on the internet. Only an old version of the driver worked under WinXP, Win7 and Win10, which Win7 always wanted to update.
Under Linux openSUSE 13.2 it was a little bit more complicated to get the touchpad to work.
The command "lsusb" listed the "Prolific Technology, Inc. PL2303 Serial Port", so the device was detected, but "xinput list" did not show the touchpad. In this post I found how to change "/dev/ttySS0" to "dev/ttyUSB0" using "minicom". I don't know if this is necessary, but it was done.

(2018-12) Add: This change of setting is necessary. Install minicom - start it like "minicom -s" as superuser form the console - in "configuration" select "Serial port setup" - type "A" - change the Serial Device to "/dev/ttyUSB0" - twice "Enter" - select "Save setup as dfl" (default) - type "control-A Q" to leave minicom - Done

From this post I learned about the "inputattach" command, which unfortunately only worked with "sudo". To make the install permanent the command has to be started on startup. As openSUSE 13.2 does not use the "/etc/rc.local" any more, " /etc/init.d/boot.local" has to be use as described in this post. You probably could also use the "after.local script" as described therein. I changed  "/etc/init.d/boot.local" and added the line:

inputattach --microsoft /dev/ttyUSB0

Now "xinput list" reports the touchpad as:
⎡ Virtual core pointer              id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer    id=4    [slave  pointer  (2)]
⎜   ↳ Microsoft Mouse               id=8    [slave  pointer  (2)]
⎜   ↳ Dell Premium USB Optical Mouse id=10  [slave  pointer  (2)]


:)

P.S.: After updating to openSUSE 42 this didn't work any more but after moving the line
inputattach --microsoft /dev/ttyUSB0

into the "/etc/init.d/after.local" script all was fine again. :))

P.P.S (2018-12): After updating to openSUSE 15 Leap this didn't work any more. The autostart function is slowly moved to systemd. I found introduction about how to use systemd here.

Just changing the "/etc/init.d/after.local" to look like this didn't work for me. #!/bin/bash inputattach --microsoft /dev/ttyUSB0 I wrote a file called "pl2303.service" containing the following text and copied it into to "/etc/systemd/system/pl2303.service".

[Unit]
Description=Wave Keyboard Touchpad on PL-2303

[Service]
User=root
ExecStart=/usr/sbin/inputattach --microsoft /dev/ttyUSB0

[Install]
WantedBy=multi-user.target


The following commands finished the procedure:
sudo chmod 777 /etc/systemd/system/pl2303.service 
systemctl start pl2303.service 
systemctl enable pl2303.service
systemctl --system daemon-reload 

:))