Chinaunix首页 | 论坛 | 博客
  • 博客访问: 572303
  • 博文数量: 185
  • 博客积分: 4031
  • 博客等级: 上校
  • 技术积分: 1591
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-27 19:45
文章分类

全部博文(185)

文章存档

2011年(14)

2010年(63)

2009年(108)

我的朋友

分类:

2009-08-08 10:55:20


(This post is the 3rd part of my Ubuntu Linux Router Upgrade Project.)

Note that all Linux commands here assume use of Linux 8.04 (""), with all updates installed as of 2008-09-30.

The device I purchased for 's service ( ) was a UM175, purchased for $100 before a $100 mail-in rebate on a 2-year contract.

Some specs as printed on the box and from Alltel's website:

  • USB modem with swivel connector
  • Compatible with Windows XP, Vista, Mac OS X
  • 1xRTT/EVDO Rev 0 and Rev A Ready
  • CDMA 800/1900MHz

Also Known As

The "Alltel Part#" listed on the box label is "UM175ALA". The P/N on the device label is "UM175AL". (I'm assuming the "AL"/"ALA" suffixes are specific to Alltel?) The FCC ID is PP4PX-700. Also listed on the device label: "Distributed by UTStarcom Personal Communications. Made in Korea by PANTECH. QUALCOMM 3G CDMA."

When connected to Windows before installing the drivers, the following "Hardware Ids" are listed in Device Manager where it is recognized as a "USB Mass Storage Device", with a vendor ID of 0x106c and a product ID of 0x3b03:

USB\Vid_106c&Pid_3b03&Rev_0100
USB\Vid_106c&Pid_3b03

And here is the output of "/usr/sbin/ -l" under Linux:

Bus 001 Device 006: ID 106c:3b03 Curitel Communications, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x106c Curitel Communications, Inc.
idProduct 0x3b03
bcdDevice 1.00
iManufacturer 1 PANTECH
iProduct 2 USB MMC Storage
iSerial 3 000000000002
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk (Zip)
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0001
Self Powered

Note that the above shows a vendor ID of 0x106c ("Curitel Communications, Inc.") and a product ID of 0x3b03.

Should be Easy (or not)

Even before I made the purchase, I ran across a blog post by Jason Costomiris, "". Reading it gave me a good vote of confidence that my plan should work. He had success using the "same" device under the same distribution of Linux that I was planning on. Verizon and Alltel use the same technology (and ). The instructions made it almost appear as simple as "plug & play".

Unfortunately, this is where things got tricky. The device is not even shipped with drivers, at least not on a CD. Instead, the device doubles as a USB mass storage device (USB MCS / UMS), and is recognized as an -enabled CD-Rom with drivers for Windows and Mac OS. Under Windows, after the drivers are installed, the device is listed as a "PANTECH UM175AL Composite Device", a "UM175AL CD-ROM USB Device", a "PANTECH UM175AL Diagnostic Port", and a "PANTECH UM175AL" modem.

By default, Linux only sees this device as a USB CD-Rom. As such, no serial port (e.g. /dev/ttyACM0) is ever created, leaving PPP nothing to connect to.

I need to thank Jason for responding to the comment I left on his post asking for help. Unfortunately, it appears that my "UM175AL" is a slightly different revision than what Jason used with so few issues.

As a sidenote, be aware of this CD-Rom emulation functionality while trying to boot from a real CD/DVD. At least under my Shuttle K-4500-N2, while my UM175 was connected, an external USB DVD-RW that was also connected wasn't given the chance to be used as a boot device. Instead, a boot attempt was made only on the UM175, which of course failed as there is nothing to boot from.

lsusb Note

Many pages I found while researching this issue referenced the output of "/proc/bus/usb/devices". This does not exist under recent versions of Ubuntu Linux. lsusb appears to be one of the preferred replacements. Some details are available in Ubuntu on launchpad.

USB_ModeSwitch

The closest I found to anyone having a similar issue was a post by "theosib" on the with a post less than a month old, "Total disaster trying to set up Verizon EVDO device". I replied with some details of my issue, after which "theosib" replied with what would turn out to be my solution - .

Be sure to read the main content on USB_ModeSwitch's main page at , as it is a pretty good summary of the issue.

Note that in my response on the UbuntuForums, I stated that when the device is properly recognized by Windows, the Vendor ID was 0x3715, compared to the current 0x3b03. So the goal is getting this to "switch" to 0x3715, at which point it should be (and is) properly recognized as a USB modem by Linux.

The download of USB_ModeSwitch comes with a precompiled executable, but I'm guessing it was compiled for 32-bit, as it wasn't recognized on my system. I recompiled it from the included source without any issues. Just make sure the "" and "libusb-dev" packages are , as this isn't mentioned on the page. Following the notes on the USB_ModeSwitch page, I placed a copy of the output in "/sbin" as "/sbin/usb_modeswitch" using .

Given the about output from "lsusb", I already had the "DefaultVendor" and "DefaultProduct" values needed to configure USB_ModeSwitch. Using these successfully detached the storage driver, but didn't have any effect on the Vendor ID or any apparent change on the output listed by lsusb. Following the documentation, this most likely meant that I still needed to send an additional special command to make the device "switch", using the "MessageEndpoint" and "MessageContent" parameters.

The preferred tool to use to find these parameters mentioned in the USB_ModeSwitch documentation is "". The link is for version 1.8. For me, it would constantly and uncontrollably refresh the screen, making it impossible to scroll the device list and pretty much making it unusable. Fortunately, I found an updated version 2.0, based on the same source, at . (Source code is readily available for both versions.)

To sniff the necessary commands from this device, I found the VID/PID with the "unswitched" ID's. Specifically, "USB\Vid_106c&Pid_3b03&Rev_0100" ("PANTECH UM175AL Composite Device"). I then installed the filter, then removed and reinserted the device. The following is my captured "UsbSnoop.log", with the necessary message portions highlighted:

[3 ms] UsbSnoop - FilterAddDevice(9a47f748) : DriverObject 89773a48, pdo 8992a9d8
[3 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_LEGACY_BUS_INFORMATION)
[3 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_LEGACY_BUS_INFORMATION)
[4 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_RESOURCE_REQUIREMENTS)
[4 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_RESOURCE_REQUIREMENTS)
[4 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_FILTER_RESOURCE_REQUIREMENTS)
[4 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_FILTER_RESOURCE_REQUIREMENTS)
[4 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_START_DEVICE)
[4 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_START_DEVICE)
[5 ms] UsbSnoop - FilterDispatchAny(9a47afd2) : IRP_MJ_SYSTEM_CONTROL
[8 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_CAPABILITIES)
[8 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_CAPABILITIES)
[8 ms] UsbSnoop - FilterDispatchAny(9a47afd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[8 ms] UsbSnoop - FdoHookDispatchInternalIoctl(9a47b1ea) : fdo=8992a9d8, Irp=888c49d0, IRQL=0
[8 ms] >>> URB 1 going down >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
TransferBufferLength = 00000012
TransferBuffer = 89a098f8
TransferBufferMDL = 00000000
Index = 00000000
DescriptorType = 00000001 (USB_DEVICE_DESCRIPTOR_TYPE)
LanguageId = 00000000
[11 ms] UsbSnoop - MyInternalIOCTLCompletion(9a47b126) : fido=00000000, Irp=888c49d0, Context=89951008, IRQL=2
[11 ms] <<< URB 1 coming back <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
PipeHandle = 89673020
TransferFlags = 0000000b (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000012
TransferBuffer = 89a098f8
TransferBufferMDL = 8979e558
00000000: 12 01 10 01 00 00 00 40 6c 10 03 3b 00 01 01 02
00000010: 03 01
UrbLink = 00000000
SetupPacket =
00000000: 80 06 00 01 00 00 12 00
[11 ms] UsbSnoop - FilterDispatchAny(9a47afd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[11 ms] UsbSnoop - FdoHookDispatchInternalIoctl(9a47b1ea) : fdo=8992a9d8, Irp=888c49d0, IRQL=0
[11 ms] >>> URB 2 going down >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
TransferBufferLength = 00000009
TransferBuffer = 896cab78
TransferBufferMDL = 00000000
Index = 00000000
DescriptorType = 00000002 (USB_CONFIGURATION_DESCRIPTOR_TYPE)
LanguageId = 00000000
[15 ms] UsbSnoop - MyInternalIOCTLCompletion(9a47b126) : fido=00000000, Irp=888c49d0, Context=89951008, IRQL=2
[15 ms] <<< URB 2 coming back <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
PipeHandle = 89673020
TransferFlags = 74f06e2f (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000009
TransferBuffer = 896cab78
TransferBufferMDL = 8898c160
00000000: 09 02 20 00 01 01 00 c0 32
UrbLink = 00000000
SetupPacket =
00000000: 80 06 00 02 00 00 09 00
[15 ms] UsbSnoop - FilterDispatchAny(9a47afd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[15 ms] UsbSnoop - FdoHookDispatchInternalIoctl(9a47b1ea) : fdo=8992a9d8, Irp=888c49d0, IRQL=0
[15 ms] >>> URB 3 going down >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
TransferBufferLength = 00000020
TransferBuffer = 89873cc8
TransferBufferMDL = 00000000
Index = 00000000
DescriptorType = 00000002 (USB_CONFIGURATION_DESCRIPTOR_TYPE)
LanguageId = 00000000
[19 ms] UsbSnoop - MyInternalIOCTLCompletion(9a47b126) : fido=00000000, Irp=888c49d0, Context=89951008, IRQL=2
[19 ms] <<< URB 3 coming back <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
PipeHandle = 89673020
TransferFlags = 74f06e2f (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 00000020
TransferBuffer = 89873cc8
TransferBufferMDL = 8898c160
00000000: 09 02 20 00 01 01 00 c0 32 09 04 00 00 02 08 06
00000010: 50 00 07 05 83 02 40 00 00 07 05 05 02 40 00 00
UrbLink = 00000000
SetupPacket =
00000000: 80 06 00 02 00 00 20 00
[19 ms] UsbSnoop - FilterDispatchAny(9a47afd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[19 ms] UsbSnoop - FdoHookDispatchInternalIoctl(9a47b1ea) : fdo=8992a9d8, Irp=888c49d0, IRQL=0
[19 ms] >>> URB 4 going down >>>
-- URB_FUNCTION_SELECT_CONFIGURATION:
ConfigurationDescriptor = 0x89873cc8 (configure)
ConfigurationDescriptor : bLength = 9
ConfigurationDescriptor : bDescriptorType = 0x00000002
ConfigurationDescriptor : wTotalLength = 0x00000020
ConfigurationDescriptor : bNumInterfaces = 0x00000001
ConfigurationDescriptor : bConfigurationValue = 0x00000001
ConfigurationDescriptor : iConfiguration = 0x00000000
ConfigurationDescriptor : bmAttributes = 0x000000c0
ConfigurationDescriptor : MaxPower = 0x00000032
ConfigurationHandle = 0x00000000
Interface[0]: Length = 56
Interface[0]: InterfaceNumber = 0
Interface[0]: AlternateSetting = 0
[57 ms] UsbSnoop - MyInternalIOCTLCompletion(9a47b126) : fido=00000000, Irp=888c49d0, Context=89951008, IRQL=0
[57 ms] <<< URB 4 coming back <<<
-- URB_FUNCTION_SELECT_CONFIGURATION:
ConfigurationDescriptor = 0x89873cc8 (configure)
ConfigurationDescriptor : bLength = 9
ConfigurationDescriptor : bDescriptorType = 0x00000002
ConfigurationDescriptor : wTotalLength = 0x00000020
ConfigurationDescriptor : bNumInterfaces = 0x00000001
ConfigurationDescriptor : bConfigurationValue = 0x00000001
ConfigurationDescriptor : iConfiguration = 0x00000000
ConfigurationDescriptor : bmAttributes = 0x000000c0
ConfigurationDescriptor : MaxPower = 0x00000032
ConfigurationHandle = 0x888d14d0
Interface[0]: Length = 56
Interface[0]: InterfaceNumber = 0
Interface[0]: AlternateSetting = 0
Interface[0]: Class = 0x00000008
Interface[0]: SubClass = 0x00000006
Interface[0]: Protocol = 0x00000050
Interface[0]: InterfaceHandle = 0x88bcece0
Interface[0]: NumberOfPipes = 2
Interface[0]: Pipes[0] : MaximumPacketSize = 0x00000040
Interface[0]: Pipes[0] : EndpointAddress = 0x00000083
Interface[0]: Pipes[0] : Interval = 0x00000000
Interface[0]: Pipes[0] : PipeType = 0x00000002 (UsbdPipeTypeBulk)
Interface[0]: Pipes[0] : PipeHandle = 0x88bcecfc
Interface[0]: Pipes[0] : MaxTransferSize = 0x00001000
Interface[0]: Pipes[0] : PipeFlags = 0x00000000
Interface[0]: Pipes[1] : MaximumPacketSize = 0x00000040
Interface[0]: Pipes[1] : EndpointAddress = 0x00000005
Interface[0]: Pipes[1] : Interval = 0x00000000
Interface[0]: Pipes[1] : PipeType = 0x00000002 (UsbdPipeTypeBulk)
Interface[0]: Pipes[1] : PipeHandle = 0x88bced1c
Interface[0]: Pipes[1] : MaxTransferSize = 0x00001000
Interface[0]: Pipes[1] : PipeFlags = 0x00000000
[57 ms] UsbSnoop - FilterDispatchAny(9a47afd2) : IRP_MJ_INTERNAL_DEVICE_CONTROL
[57 ms] UsbSnoop - FdoHookDispatchInternalIoctl(9a47b1ea) : fdo=8992a9d8, Irp=88da7770, IRQL=0
[57 ms] >>> URB 5 going down >>>
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
PipeHandle = 88bced1c [endpoint 0x00000005]
TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 0000001f
TransferBuffer = 88c4b790
TransferBufferMDL = 00000000
00000000: 55 53 42 43 90 4e d6 8a 24 00 00 00 80 00 08 ff
00000010: 02 44 45 56 43 48 47 00 00 00 00 00 00 00 00
UrbLink = 00000000
[57 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_CAPABILITIES)
[57 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_CAPABILITIES)
[58 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_PNP_DEVICE_STATE)
[58 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_PNP_DEVICE_STATE)
[58 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_DEVICE_RELATIONS)
[58 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_DEVICE_RELATIONS)
[58 ms] UsbSnoop - MyInternalIOCTLCompletion(9a47b126) : fido=00000000, Irp=88da7770, Context=89951008, IRQL=2
[58 ms] <<< URB 5 coming back <<<
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
PipeHandle = 88bced1c [endpoint 0x00000005]
TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 0000001f
TransferBuffer = 88c4b790
TransferBufferMDL = 8979e558
UrbLink = 00000000
[165 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_DEVICE_RELATIONS)
[165 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_DEVICE_RELATIONS)
[165 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_DEVICE_RELATIONS)
[165 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_QUERY_DEVICE_RELATIONS)
[166 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_SURPRISE_REMOVAL)
[166 ms] UsbSnoop - FdoHookDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_SURPRISE_REMOVAL)
[240 ms] UsbSnoop - FilterDispatchPnp(9a47f45c) : IRP_MJ_PNP (IRP_MN_REMOVE_DEVICE)

Given the above information, I then saved the following as "/etc/usb_modeswitch.conf":

DefaultVendor = 0x106c
DefaultProduct = 0x3b03

MessageEndpoint = 0x05
MessageContent = "55534243904ed68a24000000800008ff024445564348470000000000000000"

The following command can then be used to "switch" the mode of the device so that it is recognized as a USB modem. Note that as documented on the USB_ModeSwitch page, most programs using libusb need to be run as root:

sudo /sbin/usb_modeswitch -c /etc/usb_modeswitch.conf

Here is the updated output of "/usr/sbin/ -l":

Bus 001 Device 006: ID 106c:3715 Curitel Communications, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 2 Communications
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x106c Curitel Communications, Inc.
idProduct 0x3715
bcdDevice 1.00
iManufacturer 1 PANTECH
iProduct 2 PANTECH USB MODEM
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 113
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 0
CDC Header:
bcdCDC 1.09
CDC Call Management:
bmCapabilities 0x03
call management
use DataInterface
bDataInterface 1
CDC ACM:
bmCapabilities 0x0f
connection notifications
sends break
line coding and serial state
get/set/clear comm features
CDC Union:
bMasterInterface 0
bSlaveInterface 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0
iInterface 3 Data Interface
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk (Zip)
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Device Status: 0x0001
Self Powered

At this point, I was finally able to establish a connection using PPP. This setting appears to even persist across reboots, as long as the USB device doesn't loose power. Following the examples on the USB_ModeSwitch page, I saved the following as "/etc/udev/rules.d/99-usb_modeswitch.rules" which will automatically run the above command whenever the device is detected:

SUBSYSTEM=="usb", ATTR{idProduct}=="3b03", ATTR{idVendor}=="106c", \
RUN+="/sbin/usb_modeswitch -c /etc/usb_modeswitch.conf"

Note that there is a "README" file in the "/etc/udev/rules.d" directory. Additional information can be found in the man page for udev ("man udev").

Accessing the Modem

The "cdc_acm" kernel module should now detect a connected device, and connect it to "/dev/ttyACM0".

Before making the Internet connection with PPP, the modem can be communicated with as a serial device. I'm not sure what the preferred method is for doing this under Linux, but the "" command (located in "/usr/bin") worked for me:

/usr/bin/screen /dev/ttyACM0
AT
OK
AT+GMM
UM175AL

OK
ATI
Manufacturer: UTStarcom communication Inc.
Model: UM175AL
Revision: D0700ALM01_5.226 1 [Mar 21 2008 06:00:00] [Jul 29 2008 15:10:28]
ESN: 0x83AF77E
+GCAP: +CIS707-A, CIS-856, CIS-856-A

OK
AT+CSQ
31, 0

OK

(If you don't recognize the above, the on Wikipedia may be a good starting reference.)

Signal Strength

The "AT+CSQ" returns the current signal strength as a value between 0-31, with higher being better. , this number indicates the signal strength above -109 dBm in 2 dBm increments.

I know the Windows client software displays a regularly updated signal strength indicator, even while the connection is active. It would be nice to have this functionality available under Linux, too, but it doesn't look easy, if even possible.

I found one forum thread with one response on the topic: . Pretty much, it seems that the data stream would have to be paused, the modem dropped to command mode, the "AT+CSQ" command issued and the value retrieved, then sending "ATO" to go back online. The forum response suggested that a modified pppd would be needed. I'm wondering if a "wrapper" tty couldn't be written that would be passed to pppd, and query the signal strength whenever the connection is idle. Alternatively, I'd be curious if the "diagnostic port" as shown in Windows would provide similar functionality without having to interrupt the data line? Maybe this is available by one of the other interface descriptors shown in the lsusb output (above)? Maybe "bInterfaceClass 10 CDC Data"?

Update (2008-10-08): Sysinternal's shows that under Windows, the The Alltel "QuickLink Mobile" Wireless Connection Manager communicates with the "diagnostic port". Unfortunately, unlike the text-based "AT" commands used above, this communication looks completely binary. It also doesn't look to be easily decipherable, or to use any known standard. I've sent an email to UTStarcom, and can only hope for an unlikely helpful response.

Here's the output from about 5 seconds of communication with QuickLink Mobile and the "diagnostic port" using Portmon:

0  0.00000000  QuickLink Mobil  IRP_MJ_CREATE  PTDLserd0  Options: Open 
0 0.00584593 SUCCESS
1 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_DTR PTDLserd0
1 0.00000206 SUCCESS
2 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_PROPERTIES PTDLserd0
2 0.00000052 SUCCESS
3 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_BAUD_RATE PTDLserd0
3 0.00000072 SUCCESS
4 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_LINE_CONTROL PTDLserd0
4 0.00000064 SUCCESS
5 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_CHARS PTDLserd0
5 0.00000048 SUCCESS
6 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_HANDFLOW PTDLserd0
6 0.00000046 SUCCESS
7 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_QUEUE_SIZE PTDLserd0 InSize: 4096 OutSize: 4096
7 0.00000044 SUCCESS
8 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_TIMEOUTS PTDLserd0 RI:-1 RM:0 RC:0 WM:0 WC:0
8 0.00000109 SUCCESS
9 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_MODEMSTATUS PTDLserd0
9 0.00000130 SUCCESS
10 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_PROPERTIES PTDLserd0
10 0.00000053 SUCCESS
11 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_BAUD_RATE PTDLserd0
11 0.00000093 SUCCESS
12 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_LINE_CONTROL PTDLserd0
12 0.00000112 SUCCESS
13 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_CHARS PTDLserd0
13 0.00000051 SUCCESS
14 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_HANDFLOW PTDLserd0
14 0.00000045 SUCCESS
15 0.00000000 QuickLink Mobil IOCTL_SERIAL_PURGE PTDLserd0 Purge: TXABORT TXCLEAR
15 0.00000196 SUCCESS
16 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_QUEUE_SIZE PTDLserd0 InSize: 4096 OutSize: 4096
16 0.00000096 SUCCESS
17 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_TIMEOUTS PTDLserd0 RI:-1 RM:0 RC:0 WM:0 WC:0
17 0.00000124 SUCCESS
18 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_MODEMSTATUS PTDLserd0
18 0.00000117 SUCCESS
19 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_PROPERTIES PTDLserd0
19 0.00000065 SUCCESS
20 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_BAUD_RATE PTDLserd0
20 0.00000109 SUCCESS
21 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_LINE_CONTROL PTDLserd0
21 0.00000061 SUCCESS
22 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_CHARS PTDLserd0
22 0.00000050 SUCCESS
23 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_HANDFLOW PTDLserd0
23 0.00000045 SUCCESS
24 0.00000000 QuickLink Mobil IOCTL_SERIAL_PURGE PTDLserd0 Purge: TXABORT TXCLEAR
24 0.00000186 SUCCESS
25 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_QUEUE_SIZE PTDLserd0 InSize: 4096 OutSize: 4096
25 0.00000181 SUCCESS
26 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_BAUD_RATE PTDLserd0
26 0.00000140 SUCCESS
27 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_LINE_CONTROL PTDLserd0
27 0.00000083 SUCCESS
28 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_CHARS PTDLserd0
28 0.00000087 SUCCESS
29 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_HANDFLOW PTDLserd0
29 0.00000065 SUCCESS
30 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_BAUD_RATE PTDLserd0 Rate: 115200
30 0.00000137 SUCCESS
31 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_DTR PTDLserd0
31 0.00000072 SUCCESS
32 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_LINE_CONTROL PTDLserd0 StopBits: 1 Parity: NONE WordLength: 8
32 0.00000115 SUCCESS
33 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_CHAR PTDLserd0 EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
33 0.00000053 SUCCESS
34 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_HANDFLOW PTDLserd0 Shake:9 Replace:80 XonLimit:8192 XoffLimit:51200
34 0.00000224 SUCCESS
35 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_TIMEOUTS PTDLserd0 RI:-1 RM:0 RC:0 WM:0 WC:0
35 0.00000049 SUCCESS
36 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_MODEMSTATUS PTDLserd0
36 0.00000088 SUCCESS
37 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_PROPERTIES PTDLserd0
37 0.00000040 SUCCESS
38 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_BAUD_RATE PTDLserd0
38 0.00000070 SUCCESS
39 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_LINE_CONTROL PTDLserd0
39 0.00000048 SUCCESS
40 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_CHARS PTDLserd0
40 0.00000045 SUCCESS
41 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_HANDFLOW PTDLserd0
41 0.00000044 SUCCESS
42 0.00000000 QuickLink Mobil IOCTL_SERIAL_PURGE PTDLserd0 Purge: TXABORT TXCLEAR
42 0.00000182 SUCCESS
43 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_QUEUE_SIZE PTDLserd0 InSize: 2048 OutSize: 2048
43 0.00000203 SUCCESS
44 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_BAUD_RATE PTDLserd0
44 0.00000223 SUCCESS
45 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_LINE_CONTROL PTDLserd0
45 0.00000106 SUCCESS
46 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_CHARS PTDLserd0
46 0.00000066 SUCCESS
47 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_HANDFLOW PTDLserd0
47 0.00000069 SUCCESS
48 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_BAUD_RATE PTDLserd0 Rate: 115200
48 0.00000098 SUCCESS
49 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_DTR PTDLserd0
49 0.00000127 SUCCESS
50 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_LINE_CONTROL PTDLserd0 StopBits: 1 Parity: NONE WordLength: 8
50 0.00000107 SUCCESS
51 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_CHAR PTDLserd0 EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
51 0.00000052 SUCCESS
52 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_HANDFLOW PTDLserd0 Shake:9 Replace:80 XonLimit:8192 XoffLimit:51200
52 0.00000193 SUCCESS
53 0.00000000 QuickLink Mobil IOCTL_SERIAL_SET_TIMEOUTS PTDLserd0 RI:-1 RM:0 RC:0 WM:0 WC:0
53 0.00000049 SUCCESS
54 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_MODEMSTATUS PTDLserd0
54 0.00000090 SUCCESS
55 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0D C8 D0 7E
56 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
56 0.00000087 SUCCESS
55 0.00074312 SUCCESS
57 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
57 0.00000118 SUCCESS
58 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
58 0.00000049 SUCCESS
59 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
59 0.00000169 SUCCESS Length 9: C8 0D 00 00 00 00 D0 AD 7E
60 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
60 0.00000082 SUCCESS
61 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
61 0.00000311 SUCCESS
62 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
63 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
63 0.00000173 SUCCESS
62 0.00034797 SUCCESS
64 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
64 0.00000113 SUCCESS
65 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
65 0.00000077 SUCCESS
66 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
66 0.00000048 SUCCESS
67 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
67 0.00000255 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
68 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
69 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
69 0.00000084 SUCCESS
68 0.00111850 SUCCESS
70 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
70 0.00000095 SUCCESS
71 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
71 0.00000076 SUCCESS
72 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
72 0.00000048 SUCCESS
73 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
73 0.00000207 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
74 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
75 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
75 0.00000127 SUCCESS
74 0.00036960 SUCCESS
76 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
76 0.00000076 SUCCESS
77 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
77 0.00000085 SUCCESS
78 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
78 0.00000047 SUCCESS
79 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
79 0.00000188 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
81 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
81 0.00000095 SUCCESS
80 0.00067287 SUCCESS
82 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
82 0.00000109 SUCCESS
83 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
83 0.00000071 SUCCESS
84 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
84 0.00000212 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
85 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0A 77 A4 7E
86 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
86 0.00000263 SUCCESS
85 0.00083082 SUCCESS
87 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
87 0.00000139 SUCCESS
88 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
88 0.00000059 SUCCESS
89 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 25
89 0.00000212 SUCCESS Length 25: C8 0A 60 8B 00 00 F1 83 00 00 0F 21 00 00 76 0B 00 00 04 C0 0B 00 01 A0 7E
90 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0B FE B5 7E
91 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
91 0.00000176 SUCCESS
90 0.00071377 SUCCESS
92 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
92 0.00000117 SUCCESS
93 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
93 0.00000082 SUCCESS
94 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 75
94 0.00000291 SUCCESS Length 75: C8 0B 07 00 00 00 09 01 D8 07 0A 00 13 00 0D 00 0A 00 37 00 41 03 D4 FE FF FF 5D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 67 00 00 00 02 00 00 00 E4 3C 7E
95 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
96 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
96 0.00000122 SUCCESS
95 0.00088541 SUCCESS
97 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
97 0.00000116 SUCCESS
98 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
98 0.00000075 SUCCESS
99 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
99 0.00000256 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
100 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 01 00 00 00 00 0F 8D 7E
101 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
101 0.00000119 SUCCESS
100 0.00042567 SUCCESS
102 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
102 0.00000094 SUCCESS
103 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
103 0.00000047 SUCCESS
104 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
104 0.00000161 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
105 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 02 00 00 00 00 C3 90 7E
106 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
106 0.00000114 SUCCESS
105 0.00036322 SUCCESS
107 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
107 0.00000118 SUCCESS
108 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
108 0.00000067 SUCCESS
109 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
109 0.00000213 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
110 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 03 00 00 00 00 87 9B 7E
111 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
111 0.00000094 SUCCESS
110 0.00046675 SUCCESS
112 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
112 0.00000155 SUCCESS
113 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
113 0.00000062 SUCCESS
114 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
114 0.00000206 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
115 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 04 00 00 00 00 5B AB 7E
116 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
116 0.00000120 SUCCESS
115 0.00061533 SUCCESS
117 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
117 0.00000103 SUCCESS
118 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
118 0.00000078 SUCCESS
119 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
119 0.00000175 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
120 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 05 00 00 00 00 1F A0 7E
121 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
121 0.00000125 SUCCESS
120 0.00081854 SUCCESS
122 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
122 0.00000147 SUCCESS
123 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
123 0.00000050 SUCCESS
124 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
124 0.00000193 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
125 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 09 00 00 00 00 2F D7 7E
126 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
126 0.00000104 SUCCESS
125 0.00089310 SUCCESS
127 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
127 0.00000126 SUCCESS
128 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
128 0.00000069 SUCCESS
129 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
129 0.00000203 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
130 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0B 00 00 00 00 A7 C1 7E
131 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
131 0.00000117 SUCCESS
130 0.00108786 SUCCESS
132 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
132 0.00000096 SUCCESS
133 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
133 0.00000047 SUCCESS
134 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
134 0.00000125 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
135 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0D 00 00 00 00 3F FA 7E
136 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
136 0.00000093 SUCCESS
135 0.00020632 SUCCESS
137 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
137 0.00000208 SUCCESS
138 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
138 0.00000050 SUCCESS
139 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
139 0.00000217 SUCCESS Length 9: C8 24 01 00 00 00 9E 80 7E
140 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0E 00 00 00 00 F3 E7 7E
141 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
141 0.00000094 SUCCESS
140 0.00032217 SUCCESS
142 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
142 0.00000114 SUCCESS
143 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
143 0.00000047 SUCCESS
144 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
144 0.00000144 SUCCESS Length 9: C8 24 01 00 00 00 9E 80 7E
145 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0F 00 00 00 00 B7 EC 7E
146 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
146 0.00000116 SUCCESS
145 0.00047807 SUCCESS
147 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
147 0.00000118 SUCCESS
148 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
148 0.00000047 SUCCESS
149 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
149 0.00000209 SUCCESS Length 9: C8 24 01 00 00 00 9E 80 7E
150 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0C 41 C1 7E
151 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
151 0.00000103 SUCCESS
150 0.00036696 SUCCESS
152 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
152 0.00000161 SUCCESS
153 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
153 0.00000049 SUCCESS
154 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 10
154 0.00000218 SUCCESS Length 10: C8 0C 02 00 00 00 00 FB 34 7E
155 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 9: C8 11 01 00 00 00 1B 72 7E
156 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
156 0.00000077 SUCCESS
155 0.00070517 SUCCESS
157 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
157 0.00000151 SUCCESS
158 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
158 0.00000047 SUCCESS
159 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
159 0.00000209 SUCCESS Length 9: C8 11 00 00 00 00 A0 6E 7E
160 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
161 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
161 0.00000263 SUCCESS
160 0.00093037 SUCCESS
162 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
162 0.00000083 SUCCESS
163 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
163 0.00000048 SUCCESS
164 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
164 0.00000199 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
165 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
165 0.00000216 SUCCESS
166 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
166 0.00000051 SUCCESS
167 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 150
167 0.00000215 SUCCESS Length 150: C8 0B 01 00 00 00 09 01 D8 07 0A 00 13 00 0D 00 0A 00 38 00 04 03 D4 FE FF FF 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 67 00 00 00 02 00 00 00 9C 7C 7E C8 0B 01 00 00 00 09 01 D8 07
168 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
168 0.00000056 SUCCESS
169 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
169 0.00000154 SUCCESS
170 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0A 77 A4 7E
171 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
171 0.00000186 SUCCESS
170 0.00085352 SUCCESS
172 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
172 0.00000127 SUCCESS
173 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
173 0.00000048 SUCCESS
174 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 25
174 0.00000177 SUCCESS Length 25: C8 0A D1 92 00 00 62 8B 00 00 3E 22 00 00 76 0B 00 00 04 C0 0B 00 21 42 7E
175 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 06 1B 6E 7E
176 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
176 0.00000227 SUCCESS
175 0.00058334 SUCCESS
177 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
177 0.00000230 SUCCESS
178 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
178 0.00000237 SUCCESS
179 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
179 0.00000075 SUCCESS
180 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 533
180 0.00000325 SUCCESS Length 533: C8 06 09 02 0A 08 05 0A 09 06 05 05 00 00 00 00 00 00 00 00 00 00 00 00 7D 5E F7 3A 08 01 55 54 53 74 61 72 63 6F 6D 20 49 6E 63 2E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
181 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
181 0.00000379 SUCCESS
182 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
182 0.00000275 SUCCESS
183 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0A 77 A4 7E
184 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
184 0.00000208 SUCCESS
185 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
185 0.00000094 SUCCESS
186 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 101
186 0.00000292 SUCCESS Length 101: C8 0B 07 00 00 00 09 01 D8 07 0A 00 13 00 0D 00 0A 00 39 00 7D 5E 01 D4 FE FF FF 5F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 66 00 00 00 02 00 00 00 A7 07 7E C8 0A 4D 9A 00 00 DE 92 00
183 0.00095781 SUCCESS
187 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
187 0.00000205 SUCCESS
188 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
188 0.00000049 SUCCESS
189 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 100
189 0.00000220 SUCCESS Length 100: C8 0A 84 9A 00 00 15 93 00 00 AD 25 00 00 76 0B 00 00 04 C0 0B 00 35 18 7E C8 0B 07 00 00 00 09 01 D8 07 0A 00 13 00 0D 00 0A 00 3A 00 0C 00 D4 FE FF FF 5F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
190 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
190 0.00000074 SUCCESS
191 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
191 0.00000094 SUCCESS
192 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
192 0.00000077 SUCCESS
193 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
193 0.00000217 SUCCESS
194 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
194 0.00000090 SUCCESS
195 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
195 0.00000060 SUCCESS
196 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
196 0.00000264 SUCCESS
197 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0A 77 A4 7E
198 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
198 0.00000227 SUCCESS
197 0.00051973 SUCCESS
199 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
199 0.00000158 SUCCESS
200 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
200 0.00000071 SUCCESS
201 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 25
201 0.00000228 SUCCESS Length 25: C8 0A 44 A6 00 00 D5 9E 00 00 AD 25 00 00 76 0B 00 00 04 C0 0B 00 A8 53 7E
202 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
202 0.00000346 SUCCESS
203 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
203 0.00000115 SUCCESS
204 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
204 0.00000070 SUCCESS
205 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
205 0.00000235 SUCCESS
206 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 01 00 00 00 01 86 9C 7E
207 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
207 0.00000220 SUCCESS
206 0.00100681 SUCCESS
208 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
208 0.00000202 SUCCESS
209 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
209 0.00000049 SUCCESS
210 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
210 0.00000179 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
211 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 02 00 00 00 01 4A 81 7E
212 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
212 0.00000091 SUCCESS
211 0.00057449 SUCCESS
213 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
213 0.00000101 SUCCESS
214 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
214 0.00000074 SUCCESS
215 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
215 0.00000172 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
216 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
216 0.00000103 SUCCESS
217 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 03 00 00 00 01 0E 8A 7E
217 0.00063347 SUCCESS
218 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
218 0.00000171 SUCCESS
219 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
219 0.00000050 SUCCESS
220 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
220 0.00000160 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
221 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 04 00 00 00 01 D2 BA 7E
222 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
222 0.00000117 SUCCESS
221 0.00093368 SUCCESS
223 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
223 0.00000107 SUCCESS
224 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
224 0.00000048 SUCCESS
225 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
225 0.00000138 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
226 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 05 00 00 00 01 96 B1 7E
227 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
227 0.00000096 SUCCESS
226 0.00111167 SUCCESS
228 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
228 0.00000141 SUCCESS
229 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
229 0.00000048 SUCCESS
230 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
230 0.00000194 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
231 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 09 00 00 00 01 A6 C6 7E
232 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
232 0.00000139 SUCCESS
231 0.00120009 SUCCESS
233 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
233 0.00000169 SUCCESS
234 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
234 0.00000048 SUCCESS
235 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
235 0.00000194 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
236 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0B 00 00 00 01 2E D0 7E
237 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
237 0.00000143 SUCCESS
236 0.00095763 SUCCESS
238 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
238 0.00000110 SUCCESS
239 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
239 0.00000076 SUCCESS
240 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
240 0.00000349 SUCCESS Length 9: C8 24 00 00 00 00 25 9C 7E
241 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0D 00 00 00 01 B6 EB 7E
242 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
242 0.00000091 SUCCESS
241 0.00039045 SUCCESS
243 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
243 0.00000138 SUCCESS
244 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
244 0.00000047 SUCCESS
245 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
245 0.00000172 SUCCESS Length 9: C8 24 01 00 00 00 9E 80 7E
246 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0E 00 00 00 01 7A F6 7E
247 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
247 0.00000095 SUCCESS
246 0.00057285 SUCCESS
248 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
248 0.00000123 SUCCESS
249 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
249 0.00000048 SUCCESS
250 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
250 0.00000158 SUCCESS Length 9: C8 24 01 00 00 00 9E 80 7E
251 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 10: C8 24 0F 00 00 00 01 3E FD 7E
252 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
252 0.00000136 SUCCESS
251 0.00070754 SUCCESS
253 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
253 0.00000132 SUCCESS
254 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
254 0.00000046 SUCCESS
255 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
255 0.00000192 SUCCESS Length 9: C8 24 01 00 00 00 9E 80 7E
256 0.00000000 QuickLink Mobil IRP_MJ_WRITE PTDLserd0 Length 5: C8 0E 53 E2 7E
257 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
257 0.00000095 SUCCESS
256 0.00084635 SUCCESS
258 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
258 0.00000123 SUCCESS
259 0.00000000 QuickLink Mobil IOCTL_SERIAL_GET_COMMSTATUS PTDLserd0
259 0.00000072 SUCCESS
260 0.00000000 QuickLink Mobil IRP_MJ_READ PTDLserd0 Length 9
260 0.00000206 SUCCESS Length 9: C8 0E 66 00 00 00 62 62 7E
261 0.00000000 QuickLink Mobil IOCTL_SERIAL_PURGE PTDLserd0 Purge: TXABORT TXCLEAR
261 0.00000271 SUCCESS
262 0.00000000 QuickLink Mobil IOCTL_SERIAL_CLR_DTR PTDLserd0
262 0.00000225 SUCCESS
263 0.00000000 QuickLink Mobil IRP_MJ_CLEANUP PTDLserd0
263 0.00265768 SUCCESS
264 0.00000000 QuickLink Mobil IRP_MJ_CLOSE PTDLserd0
264 0.00000111 SUCCESS

To be continued...

Next up: Configuring Persistent PPP under Ubuntu.

13 comments:

hobbsc said...

I just wanted to say thanks so much for all this info. I have the exact same card through Alltel and have gotten it working under SLED 10 thanks to your post.

I've compiled all the configuration into a blog post for openSUSE Lizards here:



Thanks again!!!

Ear said...

I periodically search Google for an answer to using Alltel's UM175AL under Linux, so I'm really happy to see your article! When I get a few days off, I'm going to attempt to reproduce what you've done here.

I'm a trucker, and I need Internet every single day when I'm on the road. It has really been vexing me hardcore that I am forced to use 32-bit Windows Vista on my new Toshiba laptop, just so I can get my Alltel aircard to work! 64-bit Ubuntu runs sweet on this machine, and even if I could run the 64-bit version of Vista, Vista is just plain ugly fugly crap no no no DO NOT WANT.

Thanks for documenting your solution!

said...

Mark,
Thanks for the excellent instructions. I am trying to use my BlackBerry Storm as USB Modem with Ubuntu 8.10 and am having a hard time getting it to switch from “Mass Storage” to “Modem” using usb_modemswitch. Hope you can figure it out. Cheers! Karl

Link to file dumps:
%20EVDO%20BlackBerry%20Storm%20Ubuntu.txt

Mark A. Ziesemer said...

Karl - the link to your file dump is broken. Did you get it working under Windows? If so, were you able to use UsbSnoop to capture the MessageContent? (Or is that what the file dump was supposed to be?)

Karl said...

Sorry about the broken link Mark.
Please try this one:
http://www.coachkarl.com/images/USB_EVDO_BlackBerry_Storm_Ubuntu.txt
Yes, Storm has been working with VZAccess Manager fine for the last few months. But I really want to lose Window$...smile.
Karl

Mark A. Ziesemer said...

Karl - in the version of usb_modeswitch.conf that you included in your dump file, I see there is already a section for "Option Verizon BlackBerry Storm 9530". The TargetVendor, TargetProduct, MessageEndpoint and MessageContent there all match the same bytes found in your output from UsbSnoop. However, I don't see that section in the latest available at Did you add them? If so, I assume you tried using them by uncommenting them (removing the leading semi-colons)?

Otherwise, I see a few other sections in the UsbSnoop dump that might also be replacements for what you have. Just trial & error, I guess. I don't have access to a BlackBerry, so I don't know how much more I can help.

Karl said...

Thanks Mark,
I didn't know that I needed to remove the leading semicolons.
Let me try that and if it doesn't work I would love to hear which sections of the USBSnoop dump might work. I will be back in a while.
Karl

Karl said...

Great advice re. semicolons Mark. Now I am a step further. The error message is:

"karl@ubuntu:~$ sudo /sbin/usb_modeswitch -c /etc/usb_modeswitch.conf

* usb_modeswitch: tool for controlling "flip flop" mode USB devices
* Version 0.9.6 (C) Josua Dietze 2009
* Works with libusb 0.1.12 and probably other versions

Looking for target devices
Found target devices (1)
Looking for default devices
Found default devices (1)
Prepare switching, accessing latest device
Looking for active default driver to detach it
No driver found. Device probably not initialized. Trying to continue ...
Setting up communication with device
Error: MessageContent hex string has uneven length. Aborting"

Mark A. Ziesemer said...

Karl - see the 2nd paragraph commented at the top of usb_modeswitch.conf regarding the use of "comment signs". It's pretty typical for these types of config files, but it's nice that they also have it documented there.

Regarding the error message, my guess is that you need to remove all the spaces from within MessageContent.

Looking at the default usb_modeswitch.conf, your MessageContent appears to be significantly longer than the others. Start from the beginning, and look for any sets of data after "URB # going down". You should be able to ignore any "URB # coming back" sections. At this point, I think it's trial & error, though someone on the USB_ModeSwitch forums may be able to offer additional advice.

said...

OK Mark,
thanks a bunch for your support. Once I figure it out I will let the guys from usb_modeswitch know what works for the storm, so they can update the conf file. Cheers! Karl

said...
This post has been removed by a blog administrator.
said...

The cdc_acm module is missing in the newest linux kernel. See my posts in ubuntuforums:



Doug Mayfield said...

Another choice on getting the signal strength would be using a CMUX driver. The serial connection in some modems can be multiplexed. The AT command is AT+CMUX=1. This causes a binary protocol to take ove r the serial port. The CMUX protocol supports the usual PPP channel along with at least one more control channel for AT command to be delivered during the session. If a CMUX driver for linux was developed it could simply be pointed at the /dev/ttyACM0 and it would create 2+ pseudoterminals /dev/pty[X,Y,Z] through which AT commands and PPP could co-exist.

阅读(1943) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~