ibdriver and the 2.6.31 kernel (iBurst Linux drivers)

So in the 2.6.31 kernel the older (deprecated) network API finally got removed – biting quite a number of people rather badly. I can think of at two projects that’s problematic due to this:

1. The ibdriver package – used for the iBurst usb and pcmcia devices.
2. The dahdi 2.0.x drivers used for telephony in Asterisk.

The latter isn’t that serious a problem as I really need to move to dahdi-2.2.x anyway, the ibdriver however caused me some embarrasment as I plugged in the usb device, downloaded the drivers and … it didn’t compile. Oops. So I decided it’s time to return to some of my older roots and just make the driver work – and that’s exactly what I did.

This morning, after reading a blog post yesterday about it taking a guy two hours (without posting patches) I set aside three, and figured, at a minimum I’ll remember why I don’t do kernel hacking for a living.  That happened, but it also only took me about 30 minutes to build a patch for running the iburst drivers against the 2.6.31 kernel.  The main changes are that you’re now to use netdev_priv(dev) for accessing private data instead of dev->priv and a bunch of the device operations which has previously been part of the net_device struct is now in net_device_ops, with a few slight name changes.  The only other thing really is that one struct changed name in the pcmcia subsystem (config_info_t -> socket_state_t).

With no further ado, you can find the patch here.

Please note that whilst I’m busy running the code with this patch I can’t guarantee that there are no mistakes in it.  I just took the kernel headers, and updated the ibdriver code according to what I could tell from these headers, use at your own risk.

Tags: , ,

25 Responses to “ibdriver and the 2.6.31 kernel (iBurst Linux drivers)”

  1. Frank Ochere says:

    Thanks for the patch, works like a charm!

  2. iGecko78 says:

    Hi – I’m still new at Ubuntu and installed 10.04 LTS recently. Could you please explain how I can execute/use this patch? I gathered from my research that this is my solution for getting my iBurst USB modem to work. Thanks in advance!
    PS: Great site!

  3. Jaco Kroon says:

    iGecko:

    Firstly, check what the kernel version is that ships with your distribution (run “uname -r” – without the quotes). This will give you a number like “2.6.33-rc5” (my laptop at the moment – in dire need of an update to 2.6.34 or something).

    Check if there isn’t perhaps an officially released version for your kernel, which at the moment it seems there won’t be (last release was still for 2.6.28-rc2), so just grab that version (.

    Now download the patch above, both into the same folder:

    $ ls
    ibdriver-1.3.4-linux-2.6.28-rc2.tar.gz ibdriver-134-linux-2628-2631.patch

    Now you need to extract and patch it:

    $ tar xzf ibdriver-1.3.4-linux-2.6.28-rc2.tar.gz
    $ ls
    ibdriver-1.3.4-linux-2.6.28 ibdriver-134-linux-2628-2631.patch
    ibdriver-1.3.4-linux-2.6.28-rc2.tar.gz

    And now you need to apply the patch:

    $ cd ibdriver-1.3.4-linux-2.6.28/
    $ patch -p1 < ../ibdriver-134-linux-2628-2631.patch patching file ib-net.c patching file ib-pcmcia.c patching file ib-usb.c Compile the driver: $ make This will generate some output, and in my case bomb out with yet another error seeing that I'm running on a newer kernel still that seems to have removed a member named 'wireless_handlers'. I don't have a device at the moment, so if you run into this, let me know, I'll see if I can sort it out for you. Once the driver has compiled without errors you should be able to run: $ sudo make install Which will install all the modules into the appropriate locations. From here you just need to load it as per the instructions on the sourceforge website (I can't recall off the top of my head which module exactly I had to load).

  4. Awesome! Will send you some visitors from a post we did way back when…

    To everyone with a new install just run sudo pppoeconf after Jaco’s suggestion.

  5. Jaco Burger says:

    Hi

    Thanks for the patch, I’ve been using is since I started running 2.6.31 with no problems.

    I’ve recently upgraded to 2.6.34 and I’m having a few challenges getting it going. did you manage to get the drivers compiled from 2.6.34?

    Regards
    Jaco

  6. Jaco Kroon says:

    Actually no. I can compile test at the moment but won’t be able to do any with-device testing. Would that help?

  7. Jaco Burger says:

    Jaco that would be great if you can – I can test it for you.

  8. Modise Makhetha says:

    Hi All,

    Am trying to get the ibdriver up for the 2.6.33 on a 64 bit laptop – has anybody attempted this..? Any help..?

  9. Brent Joubert says:

    Hi Guys,

    I am also struggling with FC12 and 2.6.34 kernel with the iBurst PCMCIA modem. GRrrr…

  10. Hi Jaco,

    I am trying to ‘make’ the ibdrivers against the 2.6.35-23-generic-pae kernel. I am using your patched version of ibdriver-1.3.4-linux-2.6.28 but am getting the following errors:

    make -C /lib/modules/2.6.35-23-generic-pae/build SUBDIRS=~/ibdriver-1.3.4-linux-2.6.28 modules
    make[1]: Entering directory `/usr/src/linux-headers-2.6.35-23-generic-pae’
    CC [M] ~/ibdriver-1.3.4-linux-2.6.28/ib-net.o
    ~/ibdriver-1.3.4-linux-2.6.28/ib-net.c: In function ‘ib_net_setup’:
    ~/ibdriver-1.3.4-linux-2.6.28/ib-net.c:516: warning: statement with no effect
    CC [M] ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.o
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c:105: error: field ‘node’ has incomplete type
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c: In function ‘ib_pcmcia_config’:
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c:601: error: implicit declaration of function ‘pcmcia_get_first_tuple’
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c:604: error: implicit declaration of function ‘pcmcia_get_tuple_data’
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c:672: error: implicit declaration of function ‘pcmcia_get_next_tuple’
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c:685: warning: assignment makes integer from pointer without a cast
    ~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.c:686: warning: passing argument 1 of ‘pcmcia_request_window’ from incompatible pointer type
    include/pcmcia/ds.h:203: note: expected ‘struct pcmcia_device *’ but argument is of type ‘struct pcmcia_device **’
    make[2]: *** [~/ibdriver-1.3.4-linux-2.6.28/ib-pcmcia.o] Error 1
    make[1]: *** [_module_~/ibdriver-1.3.4-linux-2.6.28] Error 2
    make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-23-generic-pae’
    make: *** [default] Error 2

    Can you advise me on editing ib-net.c and b-pcmcia.c to eliminate these errors?

    Many thanks, Dave

  11. Mark says:

    iBurst driver for Ubuntu 10.10 (kernel 2.6.35)

    Please let me know if there is an iBurst driver for Ubuntu 10.10
    or how to modify an existing driver.

    Your comments will be much appreciated.

  12. Joe says:

    I am getting errors with this patch related to the functions pcmcia_get_first_handle and a few similar functions (pcmcia_get_next_handle and a 3rd one that I can’t remember) that seem to have been removed, and replaced by pcmcia_get_handle. I am trying to run your patch on 2.6.35. It seems like a few minor changes need to be done, but I couldn’t do them. Your help is greatly appreciated!

  13. Barco van Rhijn says:

    Thank you for your patch it has greatly assisted me. I have loaded it and everything worked fine for a few days until a week ago when suddenly my computer started freezing whenever I plug in my Iburst USB modem.

    I run Ubuntu 10.04

    I have a strong Windows background but still feel a little lost in unix at times. I have no idea how to uninstall this driver but have tried to reinstall it without any successful result.

    Any help would be greatly appreciated.

  14. Andre says:

    There is an ibdriver at http://www.meow.co.za/support/linux/ibdriver-2.6.36.tar.gz which I got working with Ubuntu 10.10.

  15. Johan says:

    Andre,

    Can you confirm which Kernel you are using on 10.10? I am on 10.04 LTS and upgraded to Kernel 2.6.34 last night. Previously successfully using iBdriver 2.6.31, however this version does not work on the 2.6.34 Kernel. So I am really hoping the 2.6.36 iBdriver does?

  16. Andre says:

    Johan,

    I am using the 2.6.35-24 kernel with this ibdriver without any problems.
    Run “make” and then “sudu make install”. After rebooting if you run “iwconfig” you should see the device ib0.

  17. Johan says:

    Andre

    Found something wierd in the iBurst Tar you posted, name shows 2.6.36 but the file inside is Bdriver 2.6.35?
    Your Kernel is for Maverick. Unfortunately the Lucid Kernels 2.6.35-generic and 2.6.36-generic does not want to play nicely with either Bdriver 2.6.31 or Bdriver 2.6.35. 🙁 will keep on trying, but to date the only Lucid Kernel working well with iBdriver 2.6.31 is Kernel 2.6.32-27-generic. Suppose I will have to stay on this kernel until someone catches up…maybe Jaco can enlighten us?

    thanks anyway.

  18. Jaco Kroon says:

    I can spot a few things that’s weird. Firstly, you need CONFIG_WIRELESS_EXT if you’re getting this compiler error:

    ib-net.c:512:8: error: ‘struct net_device’ has no member named ‘wireless_handlers’

    There doesn’t seem to be any way to flip this on without selecting some driver that relies on this. Apparently the iwl6000 driver doesn’t rely on this so I had to explicitly enable some other driver as a module. The “Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards” did the trick for me (under device drivers, networking, wireless).

    Regarding the ib-pcmcia that doesn’t want to compile – this one baffles me. One of the types (dev_node_t) is no longer available in the kernel sources. Unless you need pcmcia just edit Makefile and comment out line 13, the one with obj-m += ib-pcmcia.o – this will prevent the pcmcia module from being built but the core network and usb ones will still be available.

  19. Jaco Kroon says:

    If you need PCMCIA – sorry, I’ll need help on that one – I don’t understand the PCMCIA side of things even remotely close enough to understand the changes outlined at http://www.mjmwired.net/kernel/Documentation/pcmcia/driver-changes.txt and would either require someone with substantially more knowledge to pass some on, or a test device to work with.

    To be honest – I get the impression the ib-driver isn’t really being maintained much more and there is probably two (one long term way only, really) ways to solve this:

    a) get iBurst involved in funding developer time to maintain the driver.
    b) (and this is crucial) – push for inclusion into mainline kernel.

    b is crucial in the long run as it means subsystem maintainers will ensure that it at least compiles when updates to the core are made, and very likely make the required adjustments to the driver to work correctly with newer core systems.

    We will however need some time devoted to getting the pcmcia driver into shape first (the usb variant looks OK from my rudementary knowledge).

  20. Nik TJ says:

    Hi,

    While you are correct that the ibdriver isn’t getting full-time maintenance, it is getting work.

    Secondy, I agree that the ideal is to get the driver included in the mainline kernel.

    We did some work quite some time ago to get the driver into an “acceptable state” (eg, no #ifdef, …), but we still didn’t achieve inclusion. I wasn’t directly involved in the contact with the kernel group, and when I tried to pick this up, I found myself going in circles in terms of finding the correct person or persons to contact, etc.

    If anyone can point me to current documentation on how to get a driver accepted into mainline, I am happy to do the work to achieve this.

    In the meantime, I am working on getting the driver working on kernel 2.6.36 (there seems to be a patch around that either works, or forms the basis of what’s needed), and have a more structured plan on keeping up with the evolving kernel until such time as the the driver becomes mainline.

    Cheers!
    Nik

  21. Hans says:

    This explains how to get you iburst UTU modem (usb) to connect in
    UBUNTU 10.10 (kernel 2.6.35-22)
    6 March 2011

    I am a total beginner at Linux/Ubuntu. I do not know if (nor guarantee that) this will work for you but it did for me. Also, there might be other ways of getting your internet up and running but after extensively searching the web for a week this is the only solution I could find. The steps below are written for people (like me) with no knowledge whatsoever about Ubuntu 10.10. Lets get started:

    1. You must:
    Download the iburst driver from this link:
    http://www.meow.co.za/support/linux/ibdriver-2.6.36.tar.gz
    Download ppp-2.4.5.tar.gz from this page:
    ftp://ftp.samba.org/pub/ppp/
    Download the Roaring Penguin pppoe dialler (rp-pppoe 3.10) from this page:
    http://www.roaringpenguin.com/products/pppoe

    How do you download something if you don’t have an internet connection?
    Well, chances are you’re connected at the moment as you’re reading this. If not, hopefully you’ve installed Ubuntu alongside your Windows operating system so that you are able to boot in Windows where your modem is still of use. Else, try connecting your cell (mobile phone) via usb and (for now) setting up a Mobile Broadband connection. Last option, use a friends connected PC and save on flash disk or CD.

    Save all the downloaded items where you will remember.

    2. Boot in Ubuntu 10.10 (if not already).

    3. Create a folder named ¨iburst¨ (without the quotes) in your Home Folder.
    -Left click on ¨Places¨ (Top left of your screen).
    -Left click on ¨Home Folder¨.
    -Left click ¨File¨.
    -Left click ¨Create Folder¨.
    -Enter the name ¨iburst¨ for this new folder.

    4. Cut/copy and paste the three downloaded items (archives) from where you have saved them into your new iburst folder.

    5. Right click on each of the three archives and from the pop-up menu select ¨Extract Here¨ (do this for each of the three archives).

    Note that steps 3 to 6 is only to make sure the next steps are understood clearly as it involves using the terminal.

    6. Open a terminal window.
    -Left click on ¨Applications¨. (Top left of your screen)
    -Move your mouse pointer to ¨Accessories¨.
    -Move over to and left click on ¨Terminal¨.

    7. In the Terminal, change directory to your iburst folder.
    -Next to xxxxx:~$ type ¨cd iburst¨ (without the quotes) and hit enter (cd;space bar;iburst;enter) the following should come up: xxxxx:~/iburst$

    8. Check the contents of your iburst folder:
    -Type ¨ls¨ and hit enter (as in letter L and S), the following should come up:
    ibdriver-2.6.36.tar.gz ppp-2.4.5 rp-pppoe-3.10
    meow_ibdriver-2.6.35 ppp-2.4.5.tar.gz rp-pppoe-3.10.tar.gz

    9. Change directory to the driver folder:
    -Type ¨cd meow_ibdriver-2.6.35¨ and hit enter

    10. Build the modules:
    Type ¨make¨ and hit enter. A few things happen now, don’t ask me for any explanations!

    11. Install the modules:
    Type ¨sudo make install¨ and hit enter. (I still don’t get the sudo thing, I think its like logging in as administrator or super user or something)

    That’s it for the driver! If all went well you should be able to see the device by doing the following:

    Close the terminal window and open a new one (This is my –for dummies– way to get to a fresh start in the terminal)
    Type ¨iwconfig¨ and hit enter. You should see the device listed as ib0.

    *******************************************************************************

    12. In a (fresh) Terminal window change directory to your iburst folder:
    -Type ¨cd iburst¨ and hit enter.

    13. Change directory to the ¨ppp-2.4.5¨ folder:
    -Type ¨cd ppp-2.4.5¨ and hit enter.

    14. Run the configure script:
    -Type ¨./configure¨ and hit enter.

    15. Compile the stuff:
    -Type ¨make¨ and hit enter.

    16. Install the stuff:
    -Type ¨sudo make install¨ and hit enter.
    -Enter your password and hit enter. (This is the password you used when you installed Ubuntu)

    That’s it for the pppoe stuff.

    *******************************************************************************
    14. In a (fresh) Terminal window change directory to your iburst folder:
    -Type ¨cd iburst¨ and hit enter.

    15. Change directory to the rp-pppoe-3.10 folder:
    -Type ¨cd rp-pppoe-3.10¨ and hit enter.

    16. Change directory to src folder:
    -Type ¨cd src¨ and hit enter.

    17. Configure:
    -Type ¨sudo ./configure¨ and hit enter.

    18. Compile:
    Type ¨make¨ and hit enter.

    18. Install:
    Type ¨sudo make install¨ and hit enter.

    19. You will now be prompted (in the terminal) to – Type pppoe-setup to configure the software.
    -Type ¨sudo pppoe-setup¨ and hit enter.

    20. You will now be prompted to enter your user name. THIS IS YOUR IBURST USER NAME
    Mine is something like: gfl432@iburst.lantic.net . Enter yours and hit enter.

    21. You will now be prompted to enter the Ethernet interface connected to the DSL modem.
    -Type ¨ib0¨ (i;b;zero) and hit enter.

    22. The next prompt is up to you, read and decide. I entered ¨no¨. I think that’s the best choice. (You can always change this later by typing ¨sudo pppoe-setup¨ which brings up all these prompts again).

    23. You will now be prompted to enter the IP address. As far as my (limited) knowledge goes for any iburst connection you will have to type ¨server¨ and hit enter. Read and decide.

    24. You will now be prompted to enter your PPPoE password. THIS IS YOUR IBURST PASSWORD (I think…?- well it works for me). Mine is something like gfl432. Enter yours and hit enter.

    25. Again the password as above.

    26. You will now be prompted to enter your choice for firewall settings. I chose STANDALONE and thus typed ¨1¨ and hit enter. Read and decide.

    27.A summary of what you entered is now displayed. If correct type ¨y¨ and hit enter.

    YOU’RE DONE !!!!!!!!

    To activate your connection type ¨sudo pppoe-start¨ and hit enter, if all is well you should see a message in the terminal that says ¨Connected!
    ¨
    To stop, type ¨sudo pppoe-stop¨

    NOTE: You might have to uncheck the ¨Work Offline¨ checkbox in Mozilla under the File menu before you can browse.

    I really hope this helps someone. I had a hard time getting mine up and running. Good Luck.

  22. taha says:

    hi andre please can u help me with installing ib driver on maverick 10.10 i had tried many time with no success

  23. IMAdov says:

    hey guys ,
    have anyone find a solution to install iburst on ubunto with kernel 2.6.38 ??
    whenever i try to make it start everything freeze and if i tried to reboot with the iburst pluged FREEZE !!! if i tried to boot with the iburst it also freeze!!

  24. Michaho says:

    Hey,

    I’m trying to get an iBurst USB modem running on SUSE 11.2 (Kernel 2.6.31). I have installed the drivers as per the instructions above. Everything is fine until I plug in the modem.

    As soon as I plug the modem into the USB port, the PC freezes! Any suggestions as to what to check for?

    (PS. the instructions, did not work ‘out the box’ and I did need to change some stuff to get make to run without errors!)

    Thanks,

    • Jaco Kroon says:

      Hi,

      That’s a little too little information for me to be able to advise. Which download *exactly* did you use, and what exactly did you do differently?