
When I moved to nyc, my linux mythtv dvr stopped working. In the name of progress -- or more likely, encouraging you to buy their own dvr -- time warner does not provide analog cable. This means your dvr has to actually change the channels on your cable box. So naturally I did what any bitter engineer would do: watched commercials for a year, then hand soldered an infrared widget. It has a 20mhz avr in it and I'd been planning on programming it to be a fully general transceiver, but strangely enough, my motivation disappeared after it became capable of changing channels reliably.
This was much less of an ordeal than I was expecting it to be. With the sierra kernel module loaded, the card shows up as three usb serial ports, and you can connect via ppp through the first one with a pretty simple set of scripts. The only trick is activating the card, which can only be done in windows with the included cdrom. It can also be done with a vmware instance of windows inside linux, which is helpful for a computer with neither windows nor a cdrom drive.
Performance is better than I had expected. SSH sessions are relatively responsive (think dialup-ish) and my highly anecdotal bandwidth test (from brooklyn bridge park, dumbo) is 131 kilobits/sec upstream and 537 kilobits/sec downstream. Verizon has a rather mystifying terms-of-service which implies -- but does not make explicit -- that they intercept and analyze all your packets. Since I have a pretty fast DSL anyway, I vpn proxy pretty much everything through that.
based on:
http://www.pbandjelly.org/2006/12/sierra-wireless-aircard-595-configuration-sprintpcs/
/etc/ppp/peers/verizon:
# You usually need this if there is no PAP authentication
noauth
# The chat script
connect "/usr/sbin/chat -v -f /etc/ppp/peers/verizon_chat"
# Set up routing to go through this PPP link
defaultroute
# Use remote DNS
usepeerdns
# Default modem
/dev/ttyUSB0
# Connect at high speed
230400
local
novj
lcp-echo-failure 4
lcp-echo-interval 65535
/etc/ppp/peers/verizon_chat:
TIMEOUT 5
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' \rAT
TIMEOUT 12
OK ATD#777
TIMEOUT 60
CONNECT ""
Given two sets of strings, examples[] and counterexamples[], return the shortest regular expression which is a full match for every example but not a full match for any counterexample.