(This post is the 3rd part of my Ubuntu Linux Router Upgrade Project.)
Note that all Linux commands here assume use of Ubuntu Linux 8.04 ("Hardy Heron"), with all updates installed as of 2008-09-30.
The device I purchased for Alltel's Wireless Internet service (3G 1xEV-DO) was a UTStarcom 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/lsusb -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, "HOWTO: Verizon UM175 USB EVDO Card under Ubuntu Hardy". 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 CDMA technology (and Verizon is buying Alltel). 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 Autorun-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 bug #156085 on launchpad.
USB_ModeSwitch
The closest I found to anyone having a similar issue was a post by "theosib" on the Ubuntu Forums 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 - USB_ModeSwitch.
Be sure to read the main content on USB_ModeSwitch's main page at http://www.draisberghof.de/usb_modeswitch/, 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 "build-essential
" and "libusb-dev
" packages are installed, 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 sudo
.
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 "SniffUSB". 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 http://www.pcausa.com/Utilities/UsbSnoop/default.htm. (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/lsusb -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 "screen
" 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 Hayes command set 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.
According to Ken Kinder, 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: http://fixunix.com/ppp/62263-commad-mode-gprs-same-time.html.
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 Portmon 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.
19 comments:
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:
http://lizards.opensuse.org/2009/02/09/usb-evdo-alltel-um175al-under-sled-10/
Thanks again!!!
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!
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:
http://www.kri.com/USB%20EVDO%20BlackBerry%20Storm%20Ubuntu.txt
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?)
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
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 http://www.draisberghof.de/usb_modeswitch. 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.
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
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"
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.
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
The cdc_acm module is missing in the newest linux kernel. See my posts in ubuntuforums:
http://ubuntuforums.org/showthread.php?t=1163204
http://ubuntuforums.org/showthread.php?t=1162437
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.
Wold you, please, describe with more details, how to find correct command in usbsniff log?
I trying to use my Huawei E1750, and find one method, but this modem contains microSD card reader, but with method I found it lost all storage devices. Under windows all 2 storage (card reader and cdom with drivers) still accessible, and sd card can be replaced without disconnection.
I'd want to try more suitable command for my modem, but can't understand the principles.
Thank you for the tutorial, I try it to instal my Bandluxe C170 modem in Ubuntu Hardy Heron, I feel hard with the result of UsbSnoop.log to find the messageContent value for usb_modeswitch.
there are many lines of the log for
TransferBufferMDL or USBD_TRANSFER_DIRECTION_OUT words, I hard to decide which one I copy as the value of messageContent
thanks again,
imam
How did you use the usbsnoop.log information to come up with the message to tell the device to switch? I cannot figure that out on my own.
iav, JesperBlog, Anonymous:
Look for the first output after the send/receive of the URB_FUNCTION_SELECT_CONFIGURATION messages. At least in my case, it was the first message with the USBD_TRANSFER_DIRECTION_OUT flag.
Be sure to look for the highlighted portions in my example above.
A hint: Your device's phone number shows up right after the C8 06 (substitute a "0" for 0xa) in the device responses. In practice there's a fair bit of info there not terribly well hidden.
Thanks for your tutorial.
But I meet a big problem.
I could not point out which message content is USB_ModeSwitch need.
My device is BandLuxe C170.
My lsusb log is
http://dl.dropbox.com/u/2495108/lsusb.log
My SniffUSB/XP log is
http://dl.dropbox.com/u/2495108/UsbSnoop.log
So the first output after the send/receive of the URB_FUNCTION_SELECT_CONFIGURATION messages is
in line 293 of SniffUSB log file.
"
PipeHandle = 88f2249c [endpoint 0x00000001]
TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
TransferBufferLength = 0000001f
TransferBuffer = 890f4598
TransferBufferMDL = 00000000
00000000: 55 53 42 43 18 18 c0 88 24 00 00 00 80 00 06 12
00000010: 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00
"
But when copy it as MessageContent, it failed.
(I modified MessageContent item of /etc/usb_modeswitch/1a8d:1000 whitch is config of C120)
the file modified is http://dl.dropbox.com/u/2495108/1a8d_1000
This is the log file after I excute : "sudo usb_modeswitch -W -c "/etc/usb_modeswitch.d/1a8d:1000""
http://dl.dropbox.com/u/2495108/modswitch.log
After this command, it still not change mode from 1a8d:1000 to 1a8d:1009.
Could you help me to set up it,please?
Post a Comment