Lirc on the Sharp Zaurus

Update 24/06/03: I've just switched over to using OpenZaurus, so I won't be able to verify myself if later versions work on the Sharp ROM. However, it does mean that as soon as I get the time I'll be able to sort out the mess I made when building lirc, and provide a clean patch with config files and scripts back to the openzaurus repositories, and further up to lirc.org if they want it. I'll post here as soon as I've had the chance to do this.

LIRC on Zaurus

I have repackaged the LIRC (Linux Infra-Red Control) project to suit a Sharp Zaurus SL-5500 using the Sharp-supplied ROM (UPDATE: Jared has just informed me that it works on OZ 3.1 as well - Thanks Jared). I cannot vouch for it working on other models.
The binary packages elsewhere on the web (as at 01/01/2003) would not work on my unit. Since it took a lot of effort to set up the cross-compile environment, and then to make it work at all, I decided to put the package up here so that others need not experience the pain...

You can download the latest ipkg here.

Problems I had with lirc on the Zaurus were:

  • Binary module loaded with errors about missing symbols for irq
  • Other Binary packages were built for the IPAQ, so had mismatched module symbols and settings
  • Binary package did not include mode2, or set up the device file
  • I had vnc installed on the Zaurus, which uses device-major-61 for simulated keyboard input (kbdsim.o).
    This conflicts with LIRC, and causes the lirc_sir module to refuse to load, giving a "Device is busy" error, and a message in the syslog "init_chrdev() failed".
  • My /dev/lirc device would disappear after each reboot (probably due to my ignorance of how to set it up)

Consequently, this package:

  • Was built from the 0.6.6 release of LIRC
  • Was configured to use device-major-62 for the /dev/lirc device file
  • Includes the mode2 utility and other non-X tools from lirc (consequently, this ipkg is rather large at 350kB).
  • Removes and re-creates /dev/lirc as a major-62 node at installation
  • Adds the /etc/rc.d/init.d/lirc init script to each of the runlevels
  • Starts lircd after installation
  • Re-creates the device file at startup if it's missing, and loads the module.
  • Works for me :-)

Once you have this package installed, you will need to place a config file containing remote
controller definitions into /etc/lircd.conf, and then probably go and get Opie-remote, which you can find
over at http://www.rit.edu/~tfs1812/. This is also where you'll find
the other lirc package, which i suspect may have been built for a Zaurus running Opie/OpenZaurus, not the Sharp ROM.

I hope this helps out anyone who has had anywhere near as much trouble getting lirc on zaurus as I did! Any comments are welcome, and can be sent to zaurus at purple dot dropbear dot id dot au.

Changelog

  • 04/01/2003: Fixed init script so that it looks for lircd in /usr/sbin, not /usr/bin (thanks Craig for pointing that out). Released lirc_0.6.6-zaurus1_arm.ipk
  • 01/01/2003: Released lirc_0.6.6-zaurus_arm.ipk

Trackback URL for this post:

http://www.purple.dropbear.id.au/trackback/16

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

so how do i install it?

i download the package and then what? what next? how do i add/install it to zaurus (i have sl5500)


re: so how do i install it?

It's exactly like any other ipkg, so install it the same way.

eg: from a console, you run
"ipkg install lirc_0.6.6-zaurus1_arm.ipk"

That should install the ipk on your system ready to go. I wouldn't get your hopes up too far though - this package was built for a fairly old version of the Sharp ROM, so I can't assure you if it will even work on current ROM's.

At any rate, the IrDA interface in the Z is not capable of much range anyway, about 3 feet is possible if you carefully aim the Z at the device you are trying to control, but realistically you would need to be close enough to the equipment that it would be easier to reach over and control it manually!


Building lirc module for zaurus sl-c3200 with kernel 2.4.20

Hi, I am trying to build lirc module for the current kernel used by many people on the sharp and cacko rom.
However, when making I have the following errors ...
Did you modifying anything for lirc to build? What were your configure options?

Thanks for any help!

lirc_sir.c:139: `IRQ_Ser2ICP' undeclared here (not in a function)
lirc_sir.c: In function `on':
lirc_sir.c:242: `PPSR' undeclared (first use in this function)
lirc_sir.c:242: (Each undeclared identifier is reported only once
lirc_sir.c:242: for each function it appears in.)
lirc_sir.c:242: `PPC_TXD2' undeclared (first use in this function)
lirc_sir.c: In function `off':
lirc_sir.c:247: `PPSR' undeclared (first use in this function)
lirc_sir.c:247: `PPC_TXD2' undeclared (first use in this function)
lirc_sir.c: In function `lirc_write':
lirc_sir.c:362: `Ser2UTCR3' undeclared (first use in this function)
lirc_sir.c:383: `Ser2UTSR0' undeclared (first use in this function)
lirc_sir.c:383: `UTSR0_RID' undeclared (first use in this function)
lirc_sir.c:383: `UTSR0_RBB' undeclared (first use in this function)
lirc_sir.c:383: `UTSR0_REB' undeclared (first use in this function)
lirc_sir.c:385: `UTCR3_RXE' undeclared (first use in this function)
lirc_sir.c:385: `UTCR3_RIE' undeclared (first use in this function)
lirc_sir.c: In function `sir_interrupt':
lirc_sir.c:624: `Ser2UTSR0' undeclared (first use in this function)
lirc_sir.c:629: `UTSR0_EIF' undeclared (first use in this function)
lirc_sir.c:635: `Ser2UTSR1' undeclared (first use in this function)
lirc_sir.c:637: `UTSR1_FRE' undeclared (first use in this function)
lirc_sir.c:639: `UTSR1_ROR' undeclared (first use in this function)
lirc_sir.c:641: `UTSR1_PRE' undeclared (first use in this function)
lirc_sir.c:645: `Ser2UTDR' undeclared (first use in this function)
lirc_sir.c:650: `UTSR0_RFS' undeclared (first use in this function)
lirc_sir.c:650: `UTSR0_RID' undeclared (first use in this function)
lirc_sir.c:663: `UTSR1_RNE' undeclared (first use in this function)
lirc_sir.c:675: `UTSR0_TFS' undeclared (first use in this function)
lirc_sir.c:683: `UTSR0_RBB' undeclared (first use in this function)
lirc_sir.c:683: `UTSR0_REB' undeclared (first use in this function)
lirc_sir.c:616: warning: `data' might be used uninitialized in this function
lirc_sir.c: In function `init_hardware':
lirc_sir.c:875: `Ser2HSCR0' undeclared (first use in this function)
lirc_sir.c:877: `Ser2UTCR0' undeclared (first use in this function)
lirc_sir.c:878: `Ser2UTCR1' undeclared (first use in this function)
lirc_sir.c:879: `Ser2UTCR2' undeclared (first use in this function)
lirc_sir.c:880: `Ser2UTCR3' undeclared (first use in this function)
lirc_sir.c:881: `Ser2UTCR4' undeclared (first use in this function)
lirc_sir.c:883: `Ser2UTDR' undeclared (first use in this function)
lirc_sir.c:884: `Ser2UTSR0' undeclared (first use in this function)
lirc_sir.c:885: `Ser2UTSR1' undeclared (first use in this function)
lirc_sir.c:889: `PPDR' undeclared (first use in this function)
lirc_sir.c:889: `PPC_TXD2' undeclared (first use in this function)
lirc_sir.c:890: `PSDR' undeclared (first use in this function)
lirc_sir.c:898: `HSCR0_HSSP' undeclared (first use in this function)
lirc_sir.c:901: `UTSR0_RID' undeclared (first use in this function)
lirc_sir.c:901: `UTSR0_RBB' undeclared (first use in this function)
lirc_sir.c:901: `UTSR0_REB' undeclared (first use in this function)
lirc_sir.c:904: `UTCR0_1StpBit' undeclared (first use in this function)
lirc_sir.c:904: `UTCR0_7BitData' undeclared (first use in this function)
lirc_sir.c:909: `UTCR4_HPSIR' undeclared (first use in this function)
lirc_sir.c:909: `UTCR4_Z1_6us' undeclared (first use in this function)
lirc_sir.c:912: `UTCR3_RXE' undeclared (first use in this function)
lirc_sir.c:912: `UTCR3_RIE' undeclared (first use in this function)
lirc_sir.c: In function `drop_hardware':
lirc_sir.c:1015: `Ser2UTCR3' undeclared (first use in this function)
lirc_sir.c:1017: `Ser2UTCR0' undeclared (first use in this function)
lirc_sir.c:1018: `Ser2UTCR1' undeclared (first use in this function)
lirc_sir.c:1019: `Ser2UTCR2' undeclared (first use in this function)
lirc_sir.c:1020: `Ser2UTCR4' undeclared (first use in this function)
lirc_sir.c:1023: `Ser2HSCR0' undeclared (first use in this function)
make[5]: *** [lirc_sir.o] Error 1