scnr.net

It's not possible? Says who?

AVM Fritz!Card USB and Linux – an odyssey

with 3 comments

I want to send and receive faxes and I have a AVM Fritz!Card USB (v1). For sending I could just hook it up to my Windows XP machine, but my XP machine isn’t running all the time. My only computer running 24/7 runs Linux (Ubuntu Server Edition 9.04).

So, how hard can it be?

Let’s see: AVM has a driver from Jul 07, 2005 for SuSE. I don’t use SuSE, but I think there have been some releases since 2005. Then I found a RPM from Oct 08, 2007 containing a few patches to the AVM version.

So I download the RPM, apply the patches, install kernel-headers for my current kernel and try to compile the glue code for this kernel module. And it fails. Surprise, surprise.

Apparently there have been some API changes, let’s try to address them. First I had to replace DECLARE_MUTEX_LOCK with DECLARE_COMPLETION. Then it complained about this line:

1
if (NULL == find_task_by_pid (thread_pid)) {

After some searching on Google I replaced it with:

1
if (NULL == find_task_by_pid_ns (thread_pid, 0)) {

It also complained about not finding the header file asm/semaphore.h, which I found in linux/semaphore.h.

Then there was a problem with several USB functions not working. Apparently somebody was (understandably) fed up with non-free modules using their GPL code, so some checks concerning MODULE_LICENSE were introduced. Of course there are some tricks around this, but almost nobody is comfortable to distribute a patch containing such silly shenanigans.

So now I have a kernel module I can’t redistribute, but it loads. And it still doesn’t work. capiinfo returns a lot of fields containing just 00000000. This can be tracked down to the use of strncpy instead of lib_strncpy in src/driver.c. After changing this I can finally send and receive faxes with capisuite.

Conclusion: Getting older hardware with out of date and non-free drivers to work under Linux is possible but very annoying and time consuming.

Written by johnLate

September 25th, 2009 at 3:12 pm

Posted in Uncategorized

3 Responses to 'AVM Fritz!Card USB and Linux – an odyssey'

Subscribe to comments with RSS or TrackBack to 'AVM Fritz!Card USB and Linux – an odyssey'.

  1. johnLate

    14 Mar 10 at 15:24

  2. Have you tried the patched drivers from

    http://www.belug.de/hilfe-howtos-fcpci.html

    ? Well, the docs are written in german, but it should be pretty self explaining. The link to the sources doesn’t seem to work anymore, but after fiddling around they seem to be located under
    https://belug.de/~lutz/pub/fcpci/

    For me, these are the only drivers that I could get to work with my old AVM Fritz!Card PCI on >=2.6.28 kernels. Now I use capisuite which works fine for sending&receiving facsimile.

    HTH

    0x20h

    21 Jun 10 at 20:31

  3. Well, I need a kernel module for Fritz!Card USB (v1), not PCI.

    So far, patching it myself works; but I will not redistribute my patch, because it tampers with MODULE_LICENSE to enable some USB functions.

    johnLate

    22 Jun 10 at 12:28

Leave a Reply