I’ve published the first public beta of my FreeBSD driver for Option HSDPA modems. The driver is still beta but have been successfully tested (and used) with a Option GlobeSurfer iCON 7.2 S device (using a Turbo 3G account from Tre/Hi3G Access Sweden).

The driver is available for download together with instructions at the hso page. Please report successes and failures.

10 Responses to “First release of FreeBSD driver for Option HSDPA devices”
  1. Hans Ryding says:

    Hi

    I have been testing your driver with a USB dongle from Telenor…

    Some success ;-)

    I will see what info i can find on this device and see if i can reach further…

    Thanks for your work :-)

    Cheers

    /Hasse

    Device ID 0×6901 (Option NV device from Telenor)

    > camcontrol cmd cd0 -c “01 00 00 00 00 00″ -i 1 i1

    hso0: on uhub4
    hso_attach_muxserial: config desc begin=0xc644aa00, end=0xc644aa55, mux=0xc644aa27
    hso_attach_muxserial: invalid mux descriptor len=9, type=4
    device_attach: hso0 attach returned 6

    And if i commet out /* Sanity check the descriptor values */ in hso_attach_muxserial

    hso0: on uhub4
    hso_attach_muxserial: config desc begin=0xc6b3cb80, end=0xc6b3cbd5, mux=0xc6b3cba7
    hso_attach_muxserial: mux port mask 1
    hso_attach_muxserial: found mux port 1 (0)
    hso_attach_muxserial: intr endpoint=129, size=16
    hso_attach_ifnet: mac addr 40:0c:e3:69:01:00
    hso0: Ethernet address: 40:0c:e3:69:01:00
    hso_attach_bulkserial: found bulk endpoints in=84, out=4

    The devices are created

    cuaHSO0.0
    cuaHSO0.1
    ttyHSO0.0
    ttyHSO0.1

    hso0: flags=882 metric 0 mtu 1500
    ether 40:0c:e3:69:01:00

    echo “ATZ” > /dev/cuaHSO0.0 (give this error)

    kernel: hso_tty_open: ht=0xc676d180
    kernel: hso_txcb: hso_txcb: non-normal status
    kernel: hso_tty_close: ht=0xc676d180

    But when i fire minicom up; the system panics

    dmesg:

    Copyright (c) 1992-2008 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
    FreeBSD is a registered trademark of The FreeBSD Foundation.
    FreeBSD 7.0-STABLE-200804 #0: Tue Apr 29 21:46:32 CEST 2008
    hasse@freebsd:/usr/obj/usr/src/sys/MYKERNEL
    WARNING: WITNESS option enabled, expect reduced performance.
    Timecounter “i8254″ frequency 1193182 Hz quality 0
    CPU: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz (2400.02-MHz 686-class CPU)
    Origin = “GenuineIntel” Id = 0×6f6 Stepping = 6
    Features=0xbfebfbff
    Features2=0xe3bd
    AMD Features=0×20100000
    AMD Features2=0×1
    Cores per package: 2
    real memory = 3220045824 (3070 MB)
    avail memory = 3149500416 (3003 MB)
    ACPI APIC Table:
    FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
    cpu0 (BSP): APIC ID: 0
    cpu1 (AP): APIC ID: 1
    WITNESS: spin lock intrcnt not in order list
    ioapic0: Changing APIC ID to 2
    ioapic0 irqs 0-23 on motherboard
    kbd1 at kbdmux0
    acpi0: on motherboard
    acpi0: [ITHREAD]
    acpi0: Power Button (fixed)
    acpi0: reservation of 0, a0000 (3) failed
    acpi0: reservation of 100000, bfde0000 (3) failed
    Timecounter “ACPI-fast” frequency 3579545 Hz quality 1000
    acpi_timer0: port 0×408-0×40b on acpi0
    acpi_hpet0: iomem 0xfed00000-0xfed003ff on acpi0
    Timecounter “HPET” frequency 14318180 Hz quality 900
    cpu0: on acpi0
    acpi_perf0: on cpu0
    p4tcc0: on cpu0
    cpu1: on acpi0
    est1: on cpu1
    est: CPU supports Enhanced Speedstep, but is not recognized.
    est: cpu_vendor GenuineIntel, msr 929092906000929
    device_attach: est1 attach returned 6
    p4tcc1: on cpu1
    acpi_button0: on acpi0
    pcib0: port 0xcf8-0xcff on acpi0
    pci0: on pcib0
    pcib1: irq 16 at device 1.0 on pci0
    pci1: on pcib1
    vgapci0: port 0xa000-0xa0ff mem 0xe0000000-0xefffffff,0xf5000000-0xf500ffff irq 16 at device 0.0 on pci1
    pcm0: mem 0xf5010000-0xf5013fff irq 17 at device 0.1 on pci1
    pcm0: [ITHREAD]
    uhci0: port 0xe000-0xe01f irq 16 at device 26.0 on pci0
    uhci0: [GIANT-LOCKED]
    uhci0: [ITHREAD]
    usb0: on uhci0
    usb0: USB revision 1.0
    uhub0: on usb0
    uhub0: 2 ports with 2 removable, self powered
    uhci1: port 0xe100-0xe11f irq 21 at device 26.1 on pci0
    uhci1: [GIANT-LOCKED]
    uhci1: [ITHREAD]
    usb1: on uhci1
    usb1: USB revision 1.0
    uhub1: on usb1
    uhub1: 2 ports with 2 removable, self powered
    uhci2: port 0xe500-0xe51f irq 18 at device 26.2 on pci0
    uhci2: [GIANT-LOCKED]
    uhci2: [ITHREAD]
    usb2: on uhci2
    usb2: USB revision 1.0
    uhub2: on usb2
    uhub2: 2 ports with 2 removable, self powered
    ehci0: mem 0xf8205000-0xf82053ff irq 18 at device 26.7 on pci0
    ehci0: [GIANT-LOCKED]
    ehci0: [ITHREAD]
    usb3: EHCI version 1.0
    usb3: companion controllers, 2 ports each: usb0 usb1 usb2
    usb3: on ehci0
    usb3: USB revision 2.0
    uhub3: on usb3
    uhub3: 6 ports with 6 removable, self powered
    pcm1: mem 0xf8200000-0xf8203fff irq 22 at device 27.0 on pci0
    pcm1: [ITHREAD]
    pcib2: irq 16 at device 28.0 on pci0
    pci2: on pcib2
    pcib3: irq 16 at device 28.4 on pci0
    pci3: on pcib3
    atapci0: port 0xb000-0xb007,0xb100-0xb103,0xb200-0xb207,0xb300-0xb303,0xb400-0xb40f mem 0xf8000000-0xf8001fff irq 16 at device 0.0 on pci3
    atapci0: [ITHREAD]
    atapci0: AHCI called from vendor specific driver
    atapci0: AHCI Version 01.00 controller with 2 ports detected
    ata2: on atapci0
    ata2: [ITHREAD]
    ata3: on atapci0
    ata3: [ITHREAD]
    ata4: on atapci0
    ata4: [ITHREAD]
    pcib4: irq 17 at device 28.5 on pci0
    pci4: on pcib4
    re0: port 0xc000-0xc0ff mem 0xf7000000-0xf7000fff irq 17 at device 0.0 on pci4
    re0: Using 2 MSI messages
    miibus0: on re0
    rgephy0: PHY 1 on miibus0
    rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
    re0: Ethernet address: 00:1a:4d:4a:58:db
    re0: [FILTER]
    re0: [FILTER]
    uhci3: port 0xe200-0xe21f irq 23 at device 29.0 on pci0
    uhci3: [GIANT-LOCKED]
    uhci3: [ITHREAD]
    usb4: on uhci3
    usb4: USB revision 1.0
    uhub4: on usb4
    uhub4: 2 ports with 2 removable, self powered
    uhci4: port 0xe300-0xe31f irq 19 at device 29.1 on pci0
    uhci4: [GIANT-LOCKED]
    uhci4: [ITHREAD]
    usb5: on uhci4
    usb5: USB revision 1.0
    uhub5: on usb5
    uhub5: 2 ports with 2 removable, self powered
    uhci5: port 0xe400-0xe41f irq 18 at device 29.2 on pci0
    uhci5: [GIANT-LOCKED]
    uhci5: [ITHREAD]
    usb6: on uhci5
    usb6: USB revision 1.0
    uhub6: on usb6
    uhub6: 2 ports with 2 removable, self powered
    ehci1: mem 0xf8204000-0xf82043ff irq 23 at device 29.7 on pci0
    ehci1: [GIANT-LOCKED]
    ehci1: [ITHREAD]
    usb7: EHCI version 1.0
    usb7: companion controllers, 2 ports each: usb4 usb5 usb6
    usb7: on ehci1
    usb7: USB revision 2.0
    uhub7: on usb7
    uhub7: 6 ports with 6 removable, self powered
    pcib5: at device 30.0 on pci0
    pci5: on pcib5
    pci5: at device 1.0 (no driver attached)
    pci5: at device 6.0 (no driver attached)
    isab0: at device 31.0 on pci0
    isa0: on isab0
    atapci1: port 0×1f0-0×1f7,0×3f6,0×170-0×177,0×376,0xf000-0xf00f,0xfc00-0xfc0f at device 31.2 on pci0
    ata0: on atapci1
    ata0: [ITHREAD]
    ata1: on atapci1
    ata1: [ITHREAD]
    pci0: at device 31.3 (no driver attached)
    atapci2: port 0xe700-0xe707,0xe800-0xe803,0xe900-0xe907,0xea00-0xea03,0xeb00-0xeb0f,0xec00-0xec0f irq 19 at device 31.5 on pci0
    atapci2: [ITHREAD]
    ata5: on atapci2
    ata5: [ITHREAD]
    ata6: on atapci2
    ata6: [ITHREAD]
    fdc0: port 0×3f0-0×3f5,0×3f7 irq 6 drq 2 on acpi0
    fdc0: [FILTER]
    sio0: port 0×3f8-0×3ff irq 4 flags 0×10 on acpi0
    sio0: type 16550A
    sio0: [FILTER]
    atkbdc0: port 0×60,0×64 irq 1 on acpi0
    atkbd0: irq 1 on atkbdc0
    kbd0 at atkbd0
    atkbd0: [GIANT-LOCKED]
    atkbd0: [ITHREAD]
    pmtimer0 on isa0
    orm0: at iomem 0xc0000-0xcefff pnpid ORM0000 on isa0
    sc0: at flags 0×100 on isa0
    sc0: VGA
    sio1: configured irq 3 not in bitmap of probed irqs 0
    sio1: port may not be enabled
    vga0: at port 0×3c0-0×3df iomem 0xa0000-0xbffff on isa0
    ugen0: on uhub0
    ums0: on uhub0
    ums0: 3 buttons and Z dir.
    ugen1: on uhub4
    Timecounters tick every 1.000 msec
    ad2: 152626MB at ata1-master SATA150
    ad3: 305244MB at ata1-slave SATA300
    acd0: DVDR at ata2-master SATA150
    pcm0:
    pcm0:
    pcm1:
    pcm1:
    SMP: AP CPU #1 Launched!
    WARNING: WITNESS option enabled, expect reduced performance.
    GEOM_LABEL: Label for provider ad2s1 is ntfs/Local Disk.
    Trying to mount root from ufs:/dev/ad2s2a
    WARNING: / was not properly dismounted
    WARNING: /tmp was not properly dismounted
    WARNING: /usr was not properly dismounted
    WARNING: /var was not properly dismounted
    ugen1: at uhub4 port 1 (addr 2) disconnected
    ugen1: detached
    umass0: on uhub4
    cd0 at umass-sim0 bus 0 target 0 lun 0
    cd0: Removable CD-ROM SCSI-2 device
    cd0: 1.000MB/s transfers
    cd0: Attempt to query device size failed: NOT READY, Medium not present
    umass0: BBB reset failed, STALLED
    umass0: BBB bulk-in clear stall failed, STALLED
    umass0: BBB bulk-out clear stall failed, STALLED
    umass0: at uhub4 port 1 (addr 2) disconnected
    (cd0:umass-sim0:0:0:0): lost device
    (cd0:umass-sim0:0:0:0): removing device entry
    umass0: detached

  2. Hans Ryding says:

    Hi

    I have been testing your driver

    The system is: i386 FreeBSD 7.0-STABLE-200804

    Device ID 0×6901 (Telenor usb dongle)

    > camcontrol cmd cd0 -c “01 00 00 00 00 00″ -i 1 i1

    hso0: on uhub4
    hso_attach_muxserial: config desc begin=0xc644aa00, end=0xc644aa55, mux=0xc644aa27
    hso_attach_muxserial: invalid mux descriptor len=9, type=4
    device_attach: hso0 attach returned 6

    And if i commet out
    /* Sanity check the descriptor values */ in hso_attach_muxserial

    hso0: on uhub4
    hso_attach_muxserial: config desc begin=0xc6b3cb80, end=0xc6b3cbd5, mux=0xc6b3cba7
    hso_attach_muxserial: mux port mask 1
    hso_attach_muxserial: found mux port 1 (0)
    hso_attach_muxserial: intr endpoint=129, size=16
    hso_attach_ifnet: mac addr 40:0c:e3:69:01:00
    hso0: Ethernet address: 40:0c:e3:69:01:00
    hso_attach_bulkserial: found bulk endpoints in=84, out=4

    The cua, tty and hso0 devices are created

    When i fire minicom up – the system panics

    but i caugth this:
    kernel: hso_tty_open: ht=0xc676d180
    kernel: hso_txcb: hso_txcb: non-normal status
    kernel: hso_tty_close: ht=0xc676d180

    i will see if i can find more info in this device and see if i can come futher.

    Thanks for the great work :-)

    Cheers

    /Hasse

  3. fli says:

    What’s the device ID of the device before switching, 0×05c6 ?
    The device ID 0×6901 looks like a GlobeSurfer iCON 7.2 but with the old firmware that doesn’t require a separate driver.

    Try adding the device id to the ubsa driver (sys/dev/usb/ubsa.c) and check if that driver works.

    If you have a windows box, you can fire up the HyperTerminal and do a AT+GMR to get the firmware version.

  4. Hans Ryding says:

    Yes, it is a 0×05c6. It works with the ubsa driver and connection with ppp

    Card name: GTM378
    Firmware version: 1.12, 1Hd (Feb 22, 2007)
    Hardware version: 3.1

  5. endorendil says:

    Is this driver a translation to FreeBSD of the Option HSO driver (see pharscape)?

  6. fli says:

    @endorendil

    No and Yes, it’s not a translation (port or whatever) in the sense that there is NO code shared between the two drivers/projects.

    However, the Linux-driver is the only hardware “documentation” I’ve found so of course it has been used to understand how the hardware works (USB endpoints, initialization sequences, etc).

  7. endorendil says:

    Hi fli,

    Thanks. The lack of documentation leads to another question: is the new driver actually better than the previous ones (nozomi/kernel module), or is it just a way to create a proprietary set of drivers and software?

  8. fli says:

    This driver is NOT for the nozomi chipset but for the various new HSxPA USB-dongles from Option. (GlobeSurfer, iCON, etc). The blog post title is a bit misleading, I’ll give you that.

    There is some code for the nozomi chipset floating around on freebsd-mobile@ (or maybe it was on freebsd-net@). I don’t know how usable it is though.

  9. endorendil says:

    Hi fli,

    I am just wondering why they had to change the interface at all. Seems gratuitous. None of the other vendors seems to have actually changed anything in going to the new speeds.

  10. fli says:

    Well, the Nozomi cards have PC-card interface. Their older USB cards used to work with “generic” serial-over-usb drivers but newer “high speed” USB cards have a have changed this. I don’t know why they did it tough.

  11.  
Leave a Reply