SMC 2862W-G on Linux!

To be exact the SMC 2862W-G EZ Connect g 802.11g Wireless USB 2.0 Adapter which I got a year or two ago finally works in Linux (Kubuntu Edgy). Details below for those whoever run into the same problem. Now I have 2 Linux compatible USB dongles, sweet! So now I can finally set up my other Linux box right beside me thats been here for months haha.

lsusb output

Bus 005 Device 014: ID 0707:ee13 Standard Microsystems Corp. EZ-Connect 802.11g Adapter

Requirements: curl and git-core package. Code below only for Debian based distros.

apt-get install curl git-core

Building the driver

git clone http://islsm.org/~jb/islsm/islsm.git softmac
cd softmac
make
make load

Kudos to vlsoft for posting it here. Having late nights like this reminds me of the times I was up trying to configure X11 for my old Toshiba laptop. Ahhhh the memories. I was in my cluster kitchen when I finally got it to work if I remember correctly. Hehe.

Edit. Revisited this on my newest and oldest comp in my room: an old Pentium 233 with 32MB of RAM. Found out I left out 1 part which is copying the firmware as stated here

If you have a second-generation device, please use this firmware: 2.5.8.0 firmware and copy it to /usr/lib/hotplug/firmware/isl3887usb_bare.

And yes I should sleep as I have training at 9am. Man but I want to play with my Linux….

Edit2. Last night I tried to compile this on a fresh install of Ubuntu 7.04 Feisty Fawn (kernel: 2.6.20-16-generic) and found compile errors. The worse part was the site seemed to be down thus I couldnt search the forums for any help. Thus I did what I could do, actually read the errors and try to fix them. And viola! After a few minutes I managed to get it to compile! Now thats what Open Source is about. Something’s wrong so go ahead and fix it! Anyway changelog below

================================================================================
Changelog
========================================
Modified by Timothy Lim Sheng Hwee
on 1st July 2007
========================================
Tested on Ubuntu 7.04, Feisty Fawn (uname -r output: 2.6.20-16-generic)

File changes
--------------------------------------------------------------------------------
islsm_netdev.c
--------------------------------------------------------------------------------
line 30:
#include <linux/config.h>
changed to
#include <linux/version.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
#include <linux/config.h>
#endif
--------------------------------------------------------------------------------
islsm_dev.c
--------------------------------------------------------------------------------
line 27:
#include <linux/config.h>
changed to
#include <linux/version.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
#include <linux/config.h>
#endif
--------------------------------------------------------------------------------
islusb_transport.c
--------------------------------------------------------------------------------
line 23:
#include <linux/config.h>
moved to line 28 and changed to
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
#include <linux/config.h>
#endif
--------------------------------------------------------------------------------
islusb_init.c
--------------------------------------------------------------------------------
line 23:
#include <linux/config.h>
changed to
#include <linux/version.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
#include <linux/config.h>
#endif
--------------------------------------------------------------------------------
islsm_uart.c
--------------------------------------------------------------------------------
line 29:
add
#include <linux/poll.h>
--------------------------------------------------------------------------------
islpci_dev.c
--------------------------------------------------------------------------------
line 1254:
INIT_WORK(&priv->reset_task, islpci_do_reset_and_wake, priv);
changed to
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
INIT_WORK(&priv->reset_task, islpci_do_reset_and_wake);
#else
INIT_WORK(&priv->reset_task, islpci_do_reset_and_wake, priv);
#endif
--------------------------------------------------------------------------------
islusb_net2280.c
--------------------------------------------------------------------------------
line 284:
INIT_WORK(&p54u->int_bh, p54u_new_int_bh, islsm);
changed to
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
INIT_WORK(&p54u->int_bh, p54u_new_int_bh);
#else
INIT_WORK(&p54u->int_bh, p54u_new_int_bh, islsm);
#endif

Update (2009/12/3): It seems that the cold is no longer working and no longer available. Managed to get the USB dongle working in Debian with 2.6.26-2-686 kernel via the instructions here (basically just need to copy the firmware over to /lib/firmware and it worked)

One thought on “SMC 2862W-G on Linux!

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.