Showing posts with label Alltel. Show all posts
Showing posts with label Alltel. Show all posts

Thursday, July 30, 2009

Alltel / Verizon Wireless Internet: Disconnections, DNS, and other issues

About 9 months ago, I made a few posts around my Ubuntu Linux router upgrade project. Since then, Ubuntu has more than met the need and the goal. While my original notes were for 8.04 ("Hardy Heron"), they have since been successfully repeated on 8.10 ("Intrepid Ibex") and 9.04 ("Jaunty Jackalope").

Unfortunately, I cannot say I've had the same success with Alltel's wireless Internet service. (Alltel has since been acquired by Verizon Wireless, though there hasn't yet been any noticeable changes as a customer.) To be fair, I've been pretty impressed with Alltel's voice service. Their data services also seem to work well for temporary / mobile usage, especially for Blackberries and other smart phones. However, I often fail to comprehend how this service can be deservingly called "Internet" given some of the issues.

Disconnections

The most frustrating issue is the frequency and apparent length of disconnections. This has been an ongoing issue since I first started using the service back in September. I've learned that there is a hard 12-hour timeout, after which any connection will be terminated regardless of usage. While this is certainly an annoyance, it is an issue that I could live with - if it was the only issue. However, on a much to frequent basis, I'll seemingly get stuck in continued rounds of disconnections - repeatedly getting disconnected after periods of anywhere from a few seconds to a few minutes. This can go on for minutes or hours, and usually happens from at least once a week to several times a day. Even going to the extreme of disconnecting the wireless modem and "giving it a rest" for 10 minutes does not help. Each disconnection is rather disruptive, especially as each new connection brings a new IP address - which makes it practically impossible to gracefully resume many types of connections.

I am not the only one having these issues. A few Google searches show a number of other users with related issues with Alltel (and also Verizon), but no currently known solutions.

This is not a signal strength issue, as the reported RSSI is almost always at one of the two best reportable values: -63 or -47 dBm, or 4/5 - 5/5 bars. I've tried adding an external antenna, which made no difference. I'm unable to find any correlations to the time of day or other environmental factors.

Alltel technical support is all to eager to blame this on my use of Linux. However, the problems are identical if not worse when using Windows and their QuickLink Mobile software (made by SmithMicro Software). If anything, Linux is better able to handle the connection and any necessary re-dialing. Trying the data card on different computers (a desktop and 3 available laptops) does not change anything. My current data card is a UTStarcom / Pantech UM175AL. At one point I tried a loaner Huawei EC228 card, which also made no difference in the issues. Worse, Alltel got the accounts mixed up and ended changing the phone and account numbers on the UM175 that I had to keep, and I received a threat of legal action in the mail for breach of contract!

I've seen a number of theories for the cause of these disconnections, and have tried various solutions to them all, but without any success. This includes setting various MTU values, asyncmap settings, adjusting for LCP echo failures / timeouts, tweaking the AT commands sent in the modem chat script, and making sure that there isn't any private-address traffic being sent over the connection.

I've contacted Alltel's technical support many times to try to resolve this issue, always speaking with their separate "data card support" department, and probably totaling at least 20 hours of phone time. The original theory was that the data card was bouncing between Alltel and Sprint towers, and loosing the connection each time this happened. They updated the preferred roaming list (PRL) on the device several times, without any affect. An interesting fix they tried was setting the device to "static" mode. Supposedly this doesn't refer to a static vs. dynamic IP address, but it did result in obtaining a persistent IP address. This also did appear to help with the connection stability - but not perfectly. Most critically, this mode caused an unfortunate side effect: I could no longer receive any incoming connections. Alltel's response was that incoming connections are not supported. Many ISP's, especially residential, block common server ports - such as 80 for HTTP and 25 for SMTP. This is a debatable practice, but doesn't affect "simple" activities such as web browsing and email. However, in this "static" mode, it was as if I was behind another firewall with all incoming ports being blocked - affecting a number of Internet uses including remote desktop applications, VPN clients, instant-messaging file transfers with family and friends, or even online games.

Some of my relatives also experience the same issues. However, with pretty much only checking their email a few times per week, they seldom notice the issues. Eventually, we moved closer to Appleton - about 15 miles closer - and while this has slightly improved things, it is still not acceptable. Now that other Internet options are available, including cable and DSL, I would have switched already if we weren't stuck with the 2 year contract, and with over a year remaining yet. We would have better service at half the price.

DNS Concerns

This is another issue I found while checking-up on some things in the aftermath of the DNS cache poisoning vulnerability reported by Dan Kaminsky. The first issue I noticed was an alert on a report from the ICSI Netalyzer hosted by UC Berkeley: No DNS Port Randomization. There have been too many issues with ISP DNS servers in the past, e.g. DNS hijacking by several companies including Charter Communications, Comcast, and Time Warner. Due to this and other various ISP issues, along with being able to improve performance through local caching, I typically run my own DNS server for my home network. I thought I may have had it set to forward all DNS requests to the DNS server address received through DHCP from the ISP, and that I'd just change it to do its own recursive resolution.

This is where things got interesting. Alltel is not only playing tricks with their own DHCP-advertised DNS servers, but are intercepting all outgoing DNS traffic (UDP port 53) and acting as a transparent proxy. This is quickly confirmed through one of the same tools that can be used to check for the DNS cache poisoning vulnerability: porttest.dns-oarc.net. On my Alltel PPP connection, the peer's IP address is currently 75.116.231.29. The client IPs seen by the port test tool are 75.116.63.155 and 75.116.63.156. Neither of these addresses are mine, which are in a completely different subnet. None of these addresses currently have pointer records (PTR) registered, though I recall seeing them resolve to windstream.net on Windstream Communications only about a week ago. ARIN WHOIS does show that all these addresses belong to Alltel Communications.

The ICSI Netalyzer results seem to reflect this as well. Two points listed under Reachability Tests / General Connectivity were "A DNS proxy or firewall caused the applet's direct DNS request to be sent from another address. Instead of your IP, the request came from 75.116.63.156" and "A DNS proxy or firewall generated a new request rather than passing the applet's request unmodified". Interestingly, both were listed simply as information rather than warnings. Many people tout OpenDNS or other 3rd-party DNS servers in situations like this. Even though OpenDNS follows some of the same practices, such as redirecting invalid lookups instead of sending NXDOMAIN by default, at least they provide options to control and disable this functionality. Unfortunately, it is impossible to query any specific DNS server - OpenDNS or otherwise - while Alltel is intercepting these requests. The only work-around I can think of short of Alltel fixing this would be finding a DNS server that provides service on a non-standard port, or sending all DNS queries through some available VPN to another location. I found this forum thread from February that showed a few other users complaining of similar issues with Alltel redirecting DNS requests. While the issue apparently had been resolved, it only appears to have been temporary. Since there is nothing as a user that I can currently do to avoid these issues, I can only hope that Alltel is on top of things, including having other measures in place for avoiding DNS poisoning.

Update (2009-08-26):

Alltel finally decided to do something for me. As previously mentioned, I've lost count of how many calls I've made to Alltel technical support. Several times, I also visited the Alltel corporate retail store, and brought with me printed connection log that showed my excessive number of connections and disconnections. About a week ago, I made one last trip to the corporate retail store. After talking with the same store manager I happened to previously speak with a few months ago, he agreed to cancel my contract with no early termination fee. It wasn't an ideal solution for either of us - I'd rather have a working, mobile connection, and I'd hope that they'd value and want to keep my business. However, at least now I don't have to continue paying for service that doesn't work. I will soon be signed-up with faster, more reliable, and less expensive DSL service.

Related postings:

Sunday, October 19, 2008

Configuring Persistent PPP under Ubuntu

(This post is the 4th part of my Ubuntu Linux Router Upgrade Project.)

After my last post, Alltel UM175AL USB EVDO under Ubuntu Hardy Heron, I now have a usable serial device to connect to with PPP.

Initial Trials

At this point, Jason Costomiris's instructions at HOWTO: Verizon UM175 USB EVDO Card under Ubuntu Hardy work perfectly. The only difference is that being on Alltel instead of Verizon, the username is "<Modem'sPhoneNumber>@alltel.net", and the password is "alltel".

Disabling NetworkManager

The next improvement is to upgrade the NetworkManager utility that is part of the ubuntu-desktop package, in order for it to recognize and work with the CDMA connection. This is detailed in Jason's next post, Using NetworkManager with Pantech UM175 under Ubuntu Hardy, and allows NetworkManager to respond with the proper connection status when queried by other applications. This also makes it easier to establish the connection automatically.

Unfortunately, NetworkManager does not play well with the goals of a server or router configuration. As listed on its package page at http://packages.ubuntu.com/hardy/base/network-manager:

NetworkManager attempts to keep an active network connection available at all times. It is intended only for the desktop use-case, and is not intended for usage on servers. The point of NetworkManager is to make networking configuration and setup as painless and automatic as possible. If using DHCP, NetworkManager is _intended_ to replace default routes, obtain IP addresses from a DHCP server, and change nameservers whenever it sees fit.

As suggested, I disabled NetworkManager. There are instructions at https://help.ubuntu.com/community/NetworkManager#Disabling%20NetworkManager. However, at least under 8.10 (Intrepid Ibex), placing the "exit" scripts in "/etc/default" didn't have any effect. Instead, I just disabled the startup scripts, by calling "update-rc.d -f NetworkManager remove" (again, using sudo).

The next step is to manually configure the network settings in "/etc/network/interfaces". (See "man interfaces" for details.) Primarily, ensure that the desired interfaces are brought up automatically on startup (using the "auto" stanza), and for the purposes of a router, assigning the internal interface a static IP address:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.###.1
netmask 255.255.255.0

pppd Configuration

This is fully documented in the pppd man page. You could even use pppconfig to help with the initial setup, but I opted to work with the actual configuration files directly.

Here is what I saved as "/etc/ppp/peers/Alltel":

/dev/ttyACM0
lock

persist
#debug
hide-password

noauth
user ##########@alltel.net

defaultroute
#usepeerdns #Using bind9 instead.

init "/usr/bin/logger -i /etc/ppp/peers/Alltel Calling..."
connect "/usr/sbin/chat -Vf /etc/chatscripts/Alltel 2>/var/log/Alltel.log"

Here is what I saved as "/etc/chatscripts/Alltel":

ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'ERROR'
'' 'AT'
'OK' 'ATQ0V1E0'
'OK' 'ATZ'
'OK' 'AT&F'
'OK' 'AT+CSQ'
'OK' 'ATDT#777'
CONNECT CLIENT

This and other chatscripts are used by and documented in chat.

Finally, the password for the user identified in the peers file needs to be added to "/etc/ppp/pap-secrets":

"##########@alltel.net" Alltel "alltel"

The connection can then manually be initiated using "pppd call <name>", where "<name>" is one of the scripts configured under "/etc/ppp/peers". Note that the "nodetach debug" options are only to diagnose the initial connection, and the "nodetach" option will prevent the call from returning. (Closing the terminal window will disconnect the connection.) Note also that this needs to be run with "sudo" otherwise pppd won't have access to the above configured scripts, which should also be saved with restricted permissions to "root" (or another restricted user account).

$ sudo pppd call Alltel nodetach debug
Serial port initialized.
Serial connection established.
using channel 34
Using interface ppp0
Connect: ppp0 <--> /dev/ttyACM0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x63dc86e0> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x63dc86e0> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth chap MD5> <magic 0xfd80aab9> <pcomp> <accomp>]
sent [LCP ConfNak id=0x1 <auth pap>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x63dc86e0> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth pap> <magic 0xfd80aab9> <pcomp> <accomp>]
sent [LCP ConfAck id=0x2 <asyncmap 0x0> <auth pap> <magic 0xfd80aab9> <pcomp> <accomp>]
sent [LCP EchoReq id=0x0 magic=0x63dc86e0]
sent [PAP AuthReq id=0x1 user="##########@alltel.net" password=<hidden>]
rcvd [LCP EchoRep id=0x0 magic=0xfd80aab9]
rcvd [PAP AuthAck id=0x1 ""]
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
rcvd [IPCP ConfReq id=0x1 <addr ###.###.###.###>]
sent [IPCP ConfAck id=0x1 <addr ###.###.###.###>]
rcvd [LCP ProtRej id=0x4 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x2 <addr ###.###.###.###>]
sent [IPCP ConfReq id=0x3 <addr ###.###.###.###>]
rcvd [IPCP ConfAck id=0x3 <addr ###.###.###.###>]
Cannot determine ethernet address for proxy ARP
local  IP address ###.###.###.###
remote IP address ###.###.###.###
Script /etc/ppp/ip-up started (pid 12340)
Script /etc/ppp/ip-up finished (pid 12340), status = 0x0

Once the connection is successfully established without "nodetach", there doesn't appear to be a "hangup" option to pair with "call". It seems that using "kill" to kill the associated pppd process is the most common approach. The "pon" and "poff" scripts may also be used, but internally, "poff" just calls "kill" as well.

Integrating with /etc/network/interfaces

By adding a reference to the above pppd configuration in "/etc/network/interfaces", the connection can be easily managed like any of the other interfaces with commands like "ifup" and "ifdown" (both of which are actually the same program, but called with different names).

auto ppp0
iface ppp0 inet ppp
 provider Alltel

Bringing up the connection then yields an error:

$ sudo ifup ppp0
ppp0: ERROR while getting interface flags: No such device

While this doesn't look good, the connection is actually successfully established. This can be verified by seeing a connection for "ppp0" using "ifconfig". Calling ifup with the "-v" flag for verbose mode shows some detail as to where the error is occurring:

$ sudo ifup -v ppp0
Configuring interface ppp0=ppp0 (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/vlan
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
ppp0: ERROR while getting interface flags: No such device
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
pon Alltel
run-parts --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/avahi-autoipd
run-parts: executing /etc/network/if-up.d/avahi-daemon
run-parts: executing /etc/network/if-up.d/ip
run-parts: executing /etc/network/if-up.d/mountnfs
run-parts: executing /etc/network/if-up.d/wpasupplicant

It is actually due to the "wireless-tools" script, apparently on line #11 where it calls "$IFCONFIG "$IFACE"" up". It seems that "$IFACE" resolves to "" at this point, as the "/etc/network/if-*up.d/" scripts are called before pppd actually brings up the connection's interface. The entire script could probably be selectively disabled, but it isn't hurting anything for now.

At another point, I added a link to an iptables script in "/etc/network/if-up.d/". Similar to the above situation, "ppp0" isn't yet available at this point. The script called ifconfig to determine ppp0's IP address, which resulted in the following error:

ppp0: error fetching interface information: Device not found

That's it. At this point, I have a functional, persistent Internet connection over PPP for the local computer.

To be continued...

Next up: Enabling routing and NAT with iptables.

Saturday, October 4, 2008

Alltel UM175AL USB EVDO under Ubuntu Hardy Heron

(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.

Friday, October 3, 2008

Ubuntu Linux Router Upgrade Project

As much as I've enjoyed using OpenWrt for my home networking, I've decided to "upgrade" to a fuller Linux distribution running on a more "traditional" computer rather than an embedded device.

Internet via Cell Phone

One factor encouraging this transition is that there is currently no cable or DSL Internet service to my current residence. To remain connected, I'm using Alltel's Wireless Internet service (3G 1xEV-DO). Unfortunately, the associated access devices are essentially modems that connect by either USB, PCMCIA, or ExpressCard - none of which can be directly connected to the standard Ethernet ports on my OpenWrt-enabled Linksys router.

There are a number of devices available to bridge mobile broadband to a home or other small LAN, otherwise known as cellular routers. One such device is the Linksys WRT54G3G. However, it seems specifically targeted towards Sprint/Nextel, and none of the listed supported data cards are offered by Alltel. Also, retailing at ~$130, it costs almost twice as much as my existing WRT54GL while not even offering the same quality 802.11 wireless.

Linux opportunity

While I don't consider myself a stranger to Linux, my use of it at home has been limited to OpenWrt and virtual machines. This will be an opportunity for me to run it natively and have an always-on instance to utilize as needed.

My choice of distribution for this project is the latest version of Ubuntu, 8.04 ("Hardy Heron"), based on its release schedule, stability, features, popularity, and availability of online community support. Version 8.10 ("Intrepid Ibex") is due at the end of the month (2008-10-30). Rather than waiting, I'll utilize the remainder of the month to experiment and polish my setup. My plan is to then hopefully repeat the same success with minimal effort after a clean install of 8.10 once released.

New Hardware

I considered using an old laptop for the task. Even though the screen has serious issues, I'd usually just have it connected to my KVM switch or use SSH. However, considering that I have a Gigabit network switch and matching link to my primary desktop, I wanted a device that would also match speeds.

To be continued...

I'll be following up with a number of posts. To be included: