Novacom on Fedora 15

From WebOS Internals
Revision as of 09:15, 31 October 2011 by Pepebuho (talk | contribs)
Jump to navigation Jump to search

Installing the Novacom Driver on Fedora 15

This guide describes how to install the Novacom Debian files provided by Palm on a Fedora 15 system. The procedure described is an extension of the post MojoSDK_on_Fedora. It is current as of Fedora 15 and palm-novacom_1.0.80_i386.deb

Fedora 15 introduced a totally new way to install and maintain system services called Systemd which impacts they way to install and control the Novacom driver. See Systemd in Fedora and Man files for Systemd

Commands shown in this guide use the standard notation for indicating which can be run as the normal user and which must be run as root: commands preceded by "#" are to be run as root, whereas those preceded by "$" are to be run as the normal user.


Start by downloading the Ubuntu deb package of from the Official Palm SDK Page.

Extract the archive:

$ ar xv palm-novacom_1.0.80_i386.deb 

Extract the contents data.tar.gz and move them to their respective locations in your filesystem:

$ tar -zxvf data.tar.gz
# mv opt/Palm /opt/.
# mv usr/local/bin/* /usr/local/bin/.
# mv usr/share/doc/palm-novacom /usr/share/doc/.

Extract the contents of control.tar.gz. DO NOT run the post-install script:

$ tar -zxvf control.tar.gz

There are several reasons not to run the post-install script but the main one is that probably it will not apply to your system. The postinst script a. First, it kills novacomd in /etc/event.d. Most likely you do not have it on Fedora 15 b. Second, it removes novacomd from /usr/local/bin/novacomd . Most likely, you do not have it there. c. Third, it copies the palm-novacomd.conf file to the /etc/init directory, but only if upstart is installed. Most likely upstarts is no longer available at your system. d. Fourth it checks if it is an Ubuntu system (your's is not) therefore it does not do anything (it was supposed to modify the log rotation and syslog usage files. e. Finally it restarts novacomd which will not happen.

Therefore this step should not be taken. On the other hand if you happened to install the novacom driver on Fedora 14 or earlier, probably you should review the places examined by the postinst script and erase any trace of the old driver.

Optionally clean up the extracted files:

$ rm -fr debian-binary data.tar.gz control.tar.gz opt/ usr/ control md5sums postinst prerm postrmstrm

Download libusb-0.1.so.4 file from the Fedora 14 package. Up to version 1.0.80 you will have to do this. Download the rpm from here:[1]. If using the 64-bit version of novacom, be sure to obtain the 64-bit version of the Fedora 14 rpm. libusb-0.1.12-23.fc14.i686.rpm has been used successfuly on a 32-bit system.

Extract the rpm (replace libusb-0.1.12-23.fc14.i686.rpm by the name of the rpm you downloaded):
$ rpm2cpio libusb-0.1.12-23.fc14.i686.rpm | cpio -idmv 

Copy libusb-0.1.so.4.4.4 and copy it to the /opt/Palm/novacom directory

# cp usr/lib/libusb-0.1.so.4.4.4 /opt/Palm/novacom

Create a simlink to libusb-0.1.so.4:

# ln -s /opt/Palm/novacom/libusb-0.1.so.4.4.4 /opt/Palm/novacom/libusb-0.1.so.4

If you made it through here, you should be able to start the novacom driver manually directly.

# cd /opt/Palm/novacom
# ./novacomd -d

To verify it is working, open a new root terminal window and put a tail on the /var/log/message file

# tail -f /var/log/messages

You should see a repeating line of messages like:

  Oct 30 23:17:39 yourhostname novacomd(novacomd-119): novacom_usb_tx_thread:370: usbll(00010012) wrote tx packet len=61
  Oct 30 23:17:40 yourhostname novacomd(novacomd-119): novacom_usb_tx_thread:370: usbll(00010012) wrote tx packet len=61

where yourhostname is the name of your computer.

Kill the driver

# ps ax |grep novacomd
# kill jobnumber

where jobnumber is the job number for the novacom driver.

To automate under systemd launching and killing the driver, first we need to create new file called "novacomd.service" with the following content:

# novacomd - Driver to talk to WebOS Devices
[Unit]
Description=Driver to talk to WebOS Devices
#After=syslog.target
[Service]
WorkingDirectory=/opt/Palm/novacom
ExecStart=/opt/Palm/novacom/novacomd -d >>/var/log/novacomd.log 2>&1
Type=forking
[Install]
WantedBy=graphical.target

After you save it, copy it on the /etc/systemd/system directory:

# cp novacomd.service /etc/systemd/system

Then, let's notify Systemd that there is a new daemon service available:

# systemctl daemon-reload

Start the driver with the command:

# systemctl start novacomd.service

Stop the driver with the command:

# systemctl stop novacomd.service

The driver has the oddity that despite all the redirection to /var/log/novacomd.log it ignores it and keeps writing to /var/log/messages. If you leave everything as is, the driver will start on boot and fill up /var/log/messages. Therefore it is better, for the moment, to disable it.

# systemctl disable novacomd.service

Start and Stop continue working as before, but the service will not start on boot. If anyone wants to research this behavior, pls do and add what is needed to make it work fine. Another avenue of research would be to make the driver start/stop when a webos device is inserted/removed from the computer. Systemd is supposed to be able to do that.


Troubleshooting

If you see in your log file (/var/log/novacomd) or on your screen when you run novacomd from command lines like below:

[2011/8/4 20:10:48] novacom_usb_findandattach_thread:565: usb_handle 0x00000000, bus=002 dev=005
[2011/8/4 20:10:48] novacom_usb_rx_thread:413 -- usbll(00000000) error: reading packet, result(-1), errno 9
[2011/8/4 20:10:48] novacom_usb_rx_thread:434 -- usbll(00000000) reading packet, reads(2), duration(100ms), result(-1), last_errno 9

you are most likely using incompatible libusb version - please read the note above about libusb and try using libusb-0.1.so.4 from Fedora 14.