ZTE MF626 USB modem support in umodem
This system is connected to the internet by a ZTE USB MF626 CDMA modem, which with the Microsoft Windows 7 driver and supporting connection management software works nicely on Microsoft Windows 7. I would like to connect this system while running OpenBSD.
I noted that there is some support for this device on some Linuxes, including Gentoo. Ubuntu, Debian and Slackware. Correct me if I'm wrong, but Slackware is the most UNIX-like of the Linuxes.
I am offering a request for direction in porting, with permission, a Slackware or other suitable MF626 USB modem driver into the umodem driver of OpenBSD. I have not written any C for some time and was looking forward to writing some nice ANSI C, perhaps with some assembly incorporated therin.
I will be contacting ZTE, who have an internet forum for discussion of such subjects as Linux driver support (and would accommodate presumably OpenBSD driver support). It is likely they would like such support as from an operating system as noble and sound as the OpenBSD operating system is.
I have read the documentation on umodem, ucom, ugen and usb (the man pages) but could not see from what my system identifies at boot that the modem is actually being recognised by the USB subsystem, or a way to communicate with it.
Below are the relevent USB dmesg strings from this system (an OpenBSD 4.6 MP system straight off the CD with no CVSes (for the implicit reason that this message has been written) :
umass1 at uhub0 port 4 configuration 1 interface 2 “ZTE, Incorporated ZTE CDMA Technologies MSM” rev 2.00/0.00
scbus2 at umass1: 2 targets, initiator 0 addr 3
sd1 at scbus2 targ 1 lun0:<ZTE, MMC Storage, 2.31> SCSI2 0/direct removeable
sd1: drive offline
My understanding is that the umass device has attached to it a SCSI device with 2 targets, one of which is recognised by the usb, or SCSI subsystem, as a SCSI2 mass storage device. The modem, which I presume is on the second target, is not detected.
I will need some help understanding how the usb subsystem will need to attach the second target to the SCSI bus driver as well, or if the umodem driver can talk to this device directly (I think the former is more likely).
I will read the source code of the umodem driver for some of the other USB modems it supports, for some of the understanding I'll need to perform a port or adaptation. Possibly, ZTE will supply me with the necessary data to write support for the umodem driver by understanding how the others are implemented and following suit.
OpenBSD has chmod(2) and chmod(2), they are used by several cellular modems.. most of which have quirks where they appear as CD-ROM devices (..with a Windows driver).
From the output you've show, it appears to be detecting the MMC slot on the device.. so you can read from memory cards.
Perhaps this device has a "mode select" functionality that will allow you to switch it into behaving like modem?
The OpenBSD project isn't likely to accept GPL licenced code, so porting anything over from Linux wouldn't be the best decision.
Here is a mailing list thread about your specific modem, maybe it's enough information to get it working.
Before you go any further I would recommend to try the latest snapshot.
And please search the misc mailing archive for ZTE-MF626. You will find two threads originated by Sergio Andrés Gómez del Real around 10/12/2009 (I think gmail used US dates, so that would be in October 2009)
You don't need to be a genius to debug a pf.conf firewall ruleset, you just need the guts to run tcpdump
scbus targets and connecting umodem thereto
In the dmesg, it is reported that the umass driver attaches a scsi device:
scbus2 at umass1: 2 targets, initiator 0 addr 3
I would like to know if anyone has considered the possibility that the other target of the scbus device is the modem proper. Can anyone factually describe this observations truths/absence of understanding?
If there is the possibility to connect the modem device to the scbus a mature interface awaits connection eg., (umodem -> scbus)
Last edited by J65nko; 26th January 2010 at 11:26 PM. Reason: Speling mistakes corrected as requested by OP
Have you read those mailing list messages? Have you tried the latest snapshot?
You don't need to be a genius to debug a pf.conf firewall ruleset, you just need the guts to run tcpdump
Yes sir, I did try a new snapshot, from two days ago, but the krenel still does not recognise the device except as a removable file system.
Thankyou for the suggestion.
I also read the mail list posts regarding the ZTE and they were interesting.
Also, incidentally, when I was upgrading with the new snapshot the following error occurred during the extraction of base46.tgz :
The SHA256 5a921fc4c9b9f85f2d9de65efie185acc85885a5df9b24f767 3c3dd12ec62b1
did not match what this bsd.rd expected.
Is this information suggesting the mirror has been compromised, or is there another reason for this message, such as, for example, the bsd.rd used to for the bootable file system on the iso is the original 4.6 bsd.rd?
As I posted earlier on, a sd(4) device shows up.. indicating it's just in a sort of passthrough mode for the MMC slot (..memory stick).
Look on your device for any ability to switch modes, posting the complete dmesg output would also be kind.. just so we're positive you're not truncating the output.
You may end up having to modify one of the drivers attach functions.. so that something other than umass will attach.
I still say there may be a mode selection feature on the device itself, something user configurable.. does it have a screen or any sort of buttons?
ZTE MF626 info, and dmesg
The ZTE MF63=26 does not have a screen, but an LED mode indicator.
Below is the dmesg from this system, snapshot 26/01/2010 :
OpenBSD 4.6-current (GENERIC.MP) #69: Wed Jan 20 06:49:43 MST 2010
real mem = 2145255424 (2045MB)
avail mem = 2078789632 (1982MB)
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xf0100 (55 entries)
bios0: vendor Award Software International, Inc. version "F2" date 04/30/2009
bios0: Gigabyte Technology Co., Ltd. GA-MA790GP-UD4H
acpi0 at bios0: rev 0
acpi0: tables DSDT FACP SSDT HPET MCFG TAMG APIC
acpi0: wakeup devices USB0(S3) USB1(S3) USB2(S3) USB3(S3) USB4(S3) USB5(S3) USB6(S3) SBAZ(S4) P2P_(S5) PCE2(S4) PCE3(S4) PCE4(S4) PCE5(S4) PCE6(S4) PCE7(S4) PCE9(S4) PCEA(S4) PCEB(S4) PCEC(S4) PS2M(S5) PS2K(S5) PCI0(S5)
acpitimer0 at acpi0: 3579545 Hz, 32 bits
acpihpet0 at acpi0: 14318180 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: AMD Phenom(tm) 9950 Quad-Core Processor, 2612.38 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,P GE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT ,SSE3,MWAIT,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW
cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB 64b/line 16-way L2 cache
cpu0: ITLB 32 4KB entries fully associative, 16 4MB entries fully associative
cpu0: DTLB 48 4KB entries fully associative, 48 4MB entries fully associative
cpu0: apic clock running at 200MHz
cpu1 at mainbus0: apid 1 (application processor)
cpu1: AMD Phenom(tm) 9950 Quad-Core Processor, 2611.91 MHz
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,P GE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT ,SSE3,MWAIT,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW
cpu1: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB 64b/line 16-way L2 cache
cpu1: ITLB 32 4KB entries fully associative, 16 4MB entries fully associative
cpu1: DTLB 48 4KB entries fully associative, 48 4MB entries fully associative
cpu2 at mainbus0: apid 2 (application processor)
cpu2: AMD Phenom(tm) 9950 Quad-Core Processor, 2611.91 MHz
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,P GE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT ,SSE3,MWAIT,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW
cpu2: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB 64b/line 16-way L2 cache
cpu2: ITLB 32 4KB entries fully associative, 16 4MB entries fully associative
cpu2: DTLB 48 4KB entries fully associative, 48 4MB entries fully associative
cpu3 at mainbus0: apid 3 (application processor)
cpu3: AMD Phenom(tm) 9950 Quad-Core Processor, 2611.91 MHz
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,P GE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT ,SSE3,MWAIT,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW
cpu3: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB 64b/line 16-way L2 cache
cpu3: ITLB 32 4KB entries fully associative, 16 4MB entries fully associative
cpu3: DTLB 48 4KB entries fully associative, 48 4MB entries fully associative
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 21, 24 pins
ioapic0: misconfigured as apic 0, remapped to apid 2
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 3 (P2P_)
acpiprt2 at acpi0: bus 1 (PCE2)
acpiprt3 at acpi0: bus -1 (PCE3)
acpiprt4 at acpi0: bus -1 (PCE4)
acpiprt5 at acpi0: bus -1 (PCE5)
acpiprt6 at acpi0: bus -1 (PCE6)
acpiprt7 at acpi0: bus -1 (PCE7)
acpiprt8 at acpi0: bus -1 (PCE9)
acpiprt9 at acpi0: bus 2 (PCEA)
acpiprt10 at acpi0: bus -1 (PCEB)
acpiprt11 at acpi0: bus -1 (PCEC)
acpiprt12 at acpi0: bus -1 (AGP_)
acpicpu0 at acpi0: PSS
acpicpu1 at acpi0: PSS
acpicpu2 at acpi0: PSS
acpicpu3 at acpi0: PSS
acpibtn0 at acpi0: PWRB
pci0 at mainbus0 bus 0
mem address conflict 0xe0000000/0x20000000
bridge mem address conflict 0xfdd00000/0x100000
bridge mem address conflict 0xfdf00000/0x100000
mem address conflict 0xfe02f000/0x400
mem address conflict 0xfe02e000/0x1000
mem address conflict 0xfe02d000/0x1000
mem address conflict 0xfe02c000/0x100
mem address conflict 0xfe02b000/0x1000
mem address conflict 0xfe02a000/0x1000
mem address conflict 0xfe029000/0x100
mem address conflict 0xfe024000/0x4000
bridge mem address conflict 0xfa000000/0x3000000
bridge mem address conflict 0xfde00000/0x100000
mem address conflict 0xfe028000/0x1000
pchb0 at pci0 dev 0 function 0 "AMD RS780 Host" rev 0x00
ppb0 at pci0 dev 2 function 0 "AMD RS780 PCIE" rev 0x00: apic 2 int 18 (irq 10)
pci1 at ppb0 bus 1
vga1 at pci1 dev 0 function 0 "NVIDIA GeForce 6600" rev 0xa2
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
ppb1 at pci0 dev 10 function 0 "AMD RS780 PCIE" rev 0x00: apic 2 int 18 (irq 10)
pci2 at ppb1 bus 2
mem address conflict 0xfdfff000/0x1000
mem address conflict 0xfdfe0000/0x10000
re0 at pci2 dev 0 function 0 "Realtek 8168" rev 0x02: RTL8168C/8111C (0x3c00), apic 2 int 18 (irq 10), address 00:24:1d:75:44:e5
rgephy0 at re0 phy 7: RTL8169S/8110S PHY, rev. 2
ahci0 at pci0 dev 17 function 0 "ATI SBx00 SATA" rev 0x00: apic 2 int 22 (irq 11), AHCI 1.1
scsibus0 at ahci0: 32 targets
sd0 at scsibus0 targ 0 lun 0: <ATA, MAXTOR STM325082, 3.AA> SCSI3 0/direct fixed
sd0: 238474MB, 512 bytes/sec, 488395055 sec total
ohci0 at pci0 dev 18 function 0 "ATI SB700 USB" rev 0x00: apic 2 int 16 (irq 7), version 1.0, legacy support
ohci1 at pci0 dev 18 function 1 "ATI SB700 USB" rev 0x00: apic 2 int 16 (irq 7), version 1.0, legacy support
ehci0 at pci0 dev 18 function 2 "ATI SB700 USB2" rev 0x00: apic 2 int 17 (irq 11)
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "ATI EHCI root hub" rev 2.00/1.00 addr 1
ohci2 at pci0 dev 19 function 0 "ATI SB700 USB" rev 0x00: apic 2 int 18 (irq 10), version 1.0, legacy support
ohci3 at pci0 dev 19 function 1 "ATI SB700 USB" rev 0x00: apic 2 int 18 (irq 10), version 1.0, legacy support
ehci1 at pci0 dev 19 function 2 "ATI SB700 USB2" rev 0x00: apic 2 int 19 (irq 3)
usb1 at ehci1: USB revision 2.0
uhub1 at usb1 "ATI EHCI root hub" rev 2.00/1.00 addr 1
piixpm0 at pci0 dev 20 function 0 "ATI SBx00 SMBus" rev 0x3a: SMI
iic0 at piixpm0
spdmem0 at iic0 addr 0x50: 2GB DDR2 SDRAM non-parity PC2-6400CL5
pciide0 at pci0 dev 20 function 1 "ATI SB700 IDE" rev 0x00: DMA, channel 0 configured to compatibility, channel 1 configured to compatibility
atapiscsi0 at pciide0 channel 0 drive 0
scsibus1 at atapiscsi0: 2 targets
cd0 at scsibus1 targ 0 lun 0: <PIONEER, DVD-RW DVR-108, 1.17> ATAPI 5/cdrom removable
wd0 at pciide0 channel 0 drive 1: <ST340016A>
wd0: 16-sector PIO, LBA, 38165MB, 78163247 sectors
cd0(pciide0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 4
wd0(pciide0:0:1): using PIO mode 4, DMA mode 2, Ultra-DMA mode 5
azalia0 at pci0 dev 20 function 2 "ATI SBx00 HD Audio" rev 0x00: apic 2 int 16 (irq 7)
azalia0: codecs: Realtek ALC885
audio0 at azalia0
pcib0 at pci0 dev 20 function 3 "ATI SB700 ISA" rev 0x00
ppb2 at pci0 dev 20 function 4 "ATI SB600 PCI" rev 0x00
pci3 at ppb2 bus 3
mem address conflict 0xfb000000/0x1000000
mem address conflict 0xfa000000/0x1000000
mem address conflict 0xfcfff000/0x800
mem address conflict 0xfcff8000/0x4000
"Conexant CX2388x" rev 0x05 at pci3 dev 6 function 0 not configured
"Conexant CX2388x MPEG" rev 0x05 at pci3 dev 6 function 2 not configured
"TI TSB43AB23 FireWire" rev 0x00 at pci3 dev 14 function 0 not configured
ohci4 at pci0 dev 20 function 5 "ATI SB700 USB" rev 0x00: apic 2 int 18 (irq 10), version 1.0, legacy support
pchb1 at pci0 dev 24 function 0 "AMD AMD64 10h HyperTransport" rev 0x00
pchb2 at pci0 dev 24 function 1 "AMD AMD64 10h Address Map" rev 0x00
pchb3 at pci0 dev 24 function 2 "AMD AMD64 10h DRAM Cfg" rev 0x00
km0 at pci0 dev 24 function 3 "AMD AMD64 10h Misc Cfg" rev 0x00
pchb4 at pci0 dev 24 function 4 "AMD AMD64 10h Link Cfg" rev 0x00
usb2 at ohci0: USB revision 1.0
uhub2 at usb2 "ATI OHCI root hub" rev 1.00/1.00 addr 1
usb3 at ohci1: USB revision 1.0
uhub3 at usb3 "ATI OHCI root hub" rev 1.00/1.00 addr 1
usb4 at ohci2: USB revision 1.0
uhub4 at usb4 "ATI OHCI root hub" rev 1.00/1.00 addr 1
usb5 at ohci3: USB revision 1.0
uhub5 at usb5 "ATI OHCI root hub" rev 1.00/1.00 addr 1
isa0 at pcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
pckbc0: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pcppi0 at isa0 port 0x61
midi0 at pcppi0: <PC speaker>
spkr0 at pcppi0
it0 at isa0 port 0x2e/2: IT8718F rev 5, EC port 0x228
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
usb6 at ohci4: USB revision 1.0
uhub6 at usb6 "ATI OHCI root hub" rev 1.00/1.00 addr 1
mtrr: Pentium Pro MTRR support
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
root on wd0a swap on wd0b dump on wd0b
wsdisplay0: screen 2 deleted
wsdisplay0: screen 2 added (80x50, vt100 emulation)
wsdisplay0: screen 5 deleted
wsdisplay0: screen 5 added (80x50, vt100 emulation)
Also, can we stop calling RAID 0 RAID? It is a time consuming process to redistinguish was isn't actaully RAID from what actually is.
I did mean while the device was attached.. we can't possibly gleam anything useful about it before it's even detected.
How is that statement about RAID even remotely relevant to anything? are you referring to the chmod(2) attach message? softraid is a new driver for software RAID, it supports many different disciplines.
softraid0 at root does not indicate RAID 0, it is simply a numbered device node.
Maybe you're confused, but we are not the developers of OpenBSD.. this is a community comprised mostly of occasional users and enthusiasts.
|Thread||Thread Starter||Forum||Replies||Last Post|
|Compatible ADSL MODEM||vigol||FreeBSD General||2||17th November 2009 11:30 AM|
|[F1] write usb modem driver||raixun||Programming||7||17th July 2008 11:06 AM|
|proftpd and ppp modem||mtx||General software and network||3||11th June 2008 11:33 AM|
|USB EV-DO modem support||Bruco||FreeBSD General||1||6th June 2008 09:50 PM|
|Choosing a modem for freebsd 7.0||Johnny2Bad||General Hardware||3||6th May 2008 02:44 AM|