rockus.at: prism54 On debian

rockus.at / Linux_x86 / prism54 on debian

 

This document describes how to get a prism54 wireless network adapter card up and running on a debian woody. It provides a rather step-by-step approach, although since this is only really recommended for experienced users, I refrained from putting too much detail into the description. If there are any questions, feel free to drop me an email.
I had a netgear wg511 pcmcia card at home which I wanted to try to get running on a desktop x86 system. The missing link in hardware was an PCI to PCMCIA adapter, which was easily bought, but rather tricky to get up and running.

The PCMCIA adapter is a PCI card which provides one PCMCIA slot and announces itself to the system as a CardBus bridge. The low-cost card I got myself (from conrad.at) is based on the Ricoh RL5c475 chip.

The process of setting up a wireless network with these things contains four major steps:

  1. get the system to recognise the CardBus bridge
  2. get the system to recognise the PCMCIA card
  3. get the firmware for the wireless card to download
  4. configure the network

There is a kernel patch available from prism54.org which unfortunately requires kernel 2.4.25. Debian woody runs on 2.4.18. So you have to download the correct kernel sources, the kernel patch and configure the kernel so all required modules are included. The files you need are as follows:

  • http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.25.tar.bz2 (29 MB)
  • http://prism54.org/pub/linux/stable/kernel/v2.4/patch-2.4.25-prism54-testing-latest.bz2
  • http://prism54.org/~mcgrof/firmware/1.0.4.3.arm

First, copy the firmware into one of /lib/firmware, /usr/local/lib/firmware or /usr/lib/hotplug/firmware and rename it to isl3890.

Now the fun starts. You have to patch the kernel. After you unpacked the patch archive and cd'ed into the base directory for the kernel sources, a patch -p 1 -i /path/to/patchfile should do the trick.

It is a good idea to do the following:

  • rename the directory of the kernel-source: /usr/src/linux-2.4.25 to /usr/src/linux-2.4.25-prism54
  • set a link from /usr/src/linux to that directory.
  • adapt the version information for the kernel itself in /usr/src/linux/Makefile by modifying the fourth line in the file to EXTRAVERSION = -prism54. Note the extra - in that line.

Since you cannot avoid recompiling and installing a new kernel, it is now time to configure the new 2.4.25-prism54 kernel for our needs. The following settings have to be made (in addition to the ones you need for configuring your kernel for your machine anyway) when issuing make menuconfig:

  • Code maturity level options
    • [*] Prompt for development...
  • Loadable module support
    • [*] Enable loadable module support
    • [*] Set version info...
    • [*] Kernel module loader
  • General setup
    • PCI support
    • Support for hotpluggable devices
    • PCMCIA/CardBus support
      • [M] PCMCIA/CardBus support
      • [*] CardBus support
      • [*] i82365 compatible bridge support
    • PCI Hotplug Support
      • [M] Support for PCI Hotplug
  • Plug and Play configuration
    • [M] Plug and Play support
  • Network device support
    • [*] Network device support
    • Wireless LAN
      • [*] Wireless LAN
      • [M] Intersil Prism...
    • PCMCIA network device support
      • [*] PCMCIA network device support
      • [M] NE2000 compatible PCMCIA support
      • [*] PCMCIA Wireles LAN
  • Library routines
    • [M] Hotplug firmware loading support

Now all you have left to do is compile the new kernel and modules. For this, still in your kernel source base directory, issue the usual series of commands when building new kernel modules:

make dep
make modules
make bzImage

If everything compiles fine, you can now reboot into the new kernel (don't forget to copy the kernel to where the bootloader can find it, adapt /etc/lilo.conf and lilo the new kernel).

You need to install two additional pacakges to be able to use and control the additional hardware:

  • hotplug
  • wireless-tools
Make sure you get a version of hotplug which includes firmware.agent. At present, the debian stable version does not, the unstable version does, as does the version from backports.org.

Now you can try to insert the modules as these modules up there qould do it would you reboot now:

  1. modprobe pcmcia_core
  2. modprobe yenta_socket
  3. modprobe ds
The last one also inserts the modules prism54 and firmware_class.

So, now you should be able to detect the card with cardctl ident and it should provide some useful info as well. Also try and play with the other options of cardctl.

The PCMCIA card now also should show up in the lspci output, looking something like that: 02:00.0 Network controller: Harris Semiconductor: Unknown device 3890 (rev 01)

Check to see if /etc/hotplug/firmware.agent is executable (chmod 755), afterwards try to configure the thing via ifconfig, which should succeed. If the agent is not executable, the configuration of the device will fail with a rather nondescript request_firmware() failed for 'isl3890' in /var/log/syslog.

Up to now, this is as far as I could get. What remains to be done is to configure the device with iwconfig and ifconfig.


Original text written on 11/05/05. Addition on 02/06/08: Unfortunately, this never went any further, as I was unable to get the thing running. At some point, this project was abandoned. It could very well be that it will work out-of-the-box now with improved drivers, three years later...