Comcast Support Problems – SURFboard SBG6580 – Intermittent Connection Loss
December 3, 2011 | 9 Comments
Last night I finally got fed up with the frequent momentary disconnects that I was experiencing with Comcast. The cable modem/gateway device I have is a Motorola SURFboard SBG6580. I purchased this modem from Amazon after researching which models were supported by Comcast using the information on this page. Device details are available here. It is important to note that this is a currently supported option for connecting to the Comcast network.
Here is some information about the modem, as reported by accessing the web interface to the modem.
Standard Specification Compliant DOCSIS 3.0 Hardware Version 1 Software Version SBG6580-3.1.0.0-GA-07-180-NOSH Cable Modem MAC Address ff:ff:ff:ff:ff:ff Cable Modem Serial Number 324369118008466559530006 CM certificate Installed
Looking in the logs of my gateway device I noticed a number of critical error messages. Below is an excerpt of the logs currently on my device. One of the errors that comes up repeatedly is a T3 time-out. If you run google searches on this you will learn that many Comcast subscribers (and other cable providers too) see this error in conjunction with intermittent disconnects from their service.
I have reproduced the log of errors from the modem at the bottom of this post.
After a lot of reading of forum posts on http://forums.comcast.com I have learned that many people have similar issues.
- Brief DCs with SBG6580 in Berkeley, CA
- Re: Inconsistent connection on Motorola SBG6580 Salem VA
- SBG6580 modem problem? or Connection Problem?
- Internet Connection Drops off Many Times Daily
What all of these have in common is that after repeated suggestions from Comcast that it was a modem issue or an in-house wiring issue, and after customers in some cases spent money to swap out hardware, none of that helped to resolve the issue. The issue is most likely something upstream of the house, but other possibilities exist too.
Some have suggested that the firmware on this model is very old (and riddled with bugs) and that Motorola has made a number of updates to the firmware. You can read an interesting thread about trying to get the firmware upgraded here.
I found references to the following firmware versions being available from Motorola to the carriers.
- SBG6580-3.2.1.0-GA-02-249-NOSH
- SBG6580-3.3.0.0-GA-06-022-NOSH
Every networking device except a basic switch or hub has firmware in it that can be field upgraded. Most knowledgable customers are aware of this and have probably done at least one firmware upgrade of a networking device. The Motorola SURFboard 6580 is no different. The firmware can be upgraded. The problem is, Motorola will not provide the firmware to end consumers. Here is a support document from Motorola about their cable modems and the policies about firmware upgrades. To quote,
We apologize about the inconvenience, but your Motorola modem does not support manual upgrades. Motorola is not allowed to control the upgrades of DOCSIS devices, per the standards specification. Any firmware or software changes must be implemented via the cable network. Your cable provider can update the firmware based on what they have approved for their network distribution. Because of that Motorola is not capable of installing firmware for cable modems. Please contact the cable operator to obtain information on upgrading firmware on the cable modem.
Repeated calls to Comcast Customer Service (1-800-XFINITY / 1-800-934-6489) got me no where. I spent approximately two hours on the phone with them. I was disconnected three times, had it suggested to me that the problem was the modem multiple times and was offered the option of paying them for Signature Support, but at no time were they able to actually provide me with updated firmware for the modem.
- They were able to remotely reset the modem.
- They studied the connection history and noted that indeed the line had been failing intermittently.
- They were not at all interested in the content of the log messages I shared below.
- They could not offer any explanation for the log messages.
In summary, they were no help what so ever.
After reading about lack of firmware upgrades and my experience with their customer service folks I began to question whether
I wonder how many Comcast subscribers have similar problems with intermittent connection loss and just live with it. A survey of forum posts on their own site seems to indicate that the issues are wide spread.
This is truly a terrible situation. Customers purchase devices that Comcast recommends and then when something goes wrong with the service they place all of the blame on the in-house equipment and offer no support what so ever. The cable service providers have things structured such that consumers cannot get support for the devices from the manufacturers because that is the “service agreement” between the manufacturers and cable providers. Customers get squeezed in the middle without any recourse.
According to another site there are known problems with the Motorola SURFboard, especially with VOIP. I suspect these problems could be addressed with a firmware update, but we have already established that Comcast is in no mood to provide the necessary updates.
As a last-ditch effort I am now going to place the SURFboard SBG6580 into bridge mode and use a separate router. I found instructions for doing this on Anthony Volodkin’s blog, here. I will use my Apple AirPort Extreme (which Apple happily provides firmware updates for) as my router.
In a few days/weeks I will post a follow-up to let people know if this solved the intermittent connection loss problems.
TLV-11 - unrecognized OID;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Resetting the cable modem due to docsDevResetNow Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Received Response to Broadcast Maintenance Request, But no Unicast Maintenance opportunities received - T4 time out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; No Ranging Response received - T3 time-out REG RSP not received;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.0;CM-VER=3.0; No Ranging Response received - T3 time-out SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.0;CM-VER=3.0; No Ranging Response received - T3 time-out No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.0;CM-VER=3.0; No Ranging Response received - T3 time-out No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.0;CM-VER=3.0; No Ranging Response received - T3 time-out SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire QAM/QPSK symbol timing;;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to acquire FEC framing;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:00:00:00:00:00;CM-QOS=1.0;CM-VER=3.0; Received Response to Broadcast Maintenance Request, But no Unicast Maintenance opportunities received - T4 time out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Received Response to Broadcast Maintenance Request, But no Unicast Maintenance opportunities received - T4 time out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; SYNC Timing Synchronization failure - Failed to receive MAC SYNC frame within time-out period;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Started Unicast Maintenance Ranging - No Response received - T3 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; Received Response to Broadcast Maintenance Request, But no Unicast Maintenance opportunities received - T4 time out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.1;CM-VER=3.0; No Ranging Response received - T3 time-out No Ranging Response received - T3 time-out No Maintenance Broadcasts for Ranging opportunities received - T2 time-out;CM-MAC=ff:ff:ff:ff:ff:ff;CMTS-MAC=00:01:5c:24:f1:45;CM-QOS=1.0;CM-VER=3.0; No Ranging Response received - T3 time-out
Capturing AirPort Extreme Log with Lion Server Syslog
August 9, 2011 | Comments Off
Mac OS X Lion Server can be used as a syslog server to capture the log messages from an Apple AirPort Extreme wireless router. The instructions below walk you through setting this up.
Syslog is controlled by a plist file found in the launch daemons directory. The full path to the file is:
/System/Library/LaunchDaemons/com.apple.syslogd.plist
You need to edit this file to add a network listener. The plist is stored in a binary format so you need to use the plutil to convert it to XML using this command:
$ pushd /System/Library/LaunchDaemons $ sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo vim /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
Here is a complete example of the modified plist file. The new key is the NetworkListener. Be sure you add it nested inside the Sockets key or it will not work.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>EnableTransactions</key> <true/> <key>EnvironmentVariables</key> <dict> <key>ASL_DISABLE</key> <string>1</string> </dict> <key>HopefullyExitsLast</key> <true/> <key>JetsamProperties</key> <dict> <key>JetsamMemoryLimit</key> <integer>300</integer> <key>JetsamPriority</key> <integer>-49</integer> </dict> <key>Label</key> <string>com.apple.syslogd</string> <key>MachServices</key> <dict> <key>com.apple.system.logger</key> <true/> </dict> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> </array> <key>Sockets</key> <dict> <key>NetworkListener</key> <dict> <key>SockServiceName</key> <string>syslog</string> <key>SockType</key> <string>dgram</string> </dict> <key>AppleSystemLogger</key> <dict> <key>SockPathMode</key> <integer>438</integer> <key>SockPathName</key> <string>/var/run/asl_input</string> </dict> <key>BSDSystemLogger</key> <dict> <key>SockPathMode</key> <integer>438</integer> <key>SockPathName</key> <string>/var/run/syslog</string> <key>SockType</key> <string>dgram</string> </dict> </dict></dict></plist>
Once you have updated the plist the next step is to update the configuration of your AirPort Extreme. Under Applications => Utilities open the AirPort Utility and connect to your AirPort Extreme. On the Advanced tab select the “Logging & Statistics” panel. Enter the IP address of your Mac OS X Lion Server in “Syslog Destination Address:” and select “6 – Informational” for the “Syslog Level:”. You can see a screenshot of the AirPort Utility settings below. Update the settings on the AirPort Extreme.
Now, you probably want to verify that the logging is actually happening. Open Console.app on your server and look at “All Messages”. While looking at the logs go to another machine (I used my MacBook Air with a wireless connection to the AirPort Extreme) and open System Preferences and then Network. Select your network adapter and ask for it to renew the DHCP lease. You should see some activity in the log.
Another way to verify the logging is to turn wifi off on your laptop. You should see a message like this:
8/9/11 8:43:09.000 AM 80211: Disassociated with station 60:33:4b:2c:de:c0
When you turn wifi back on you will see something similar to this:
8/9/11 8:43:10.000 AM 80211: Rotated TKIP group key. 8/9/11 8:43:21.000 AM 80211: Associated with station 60:33:4b:2c:de:c0 8/9/11 8:43:21.000 AM 80211: Authenticating station 60:33:4b:2c:de:c0 to RADIUS. 8/9/11 8:43:21.000 AM 80211: Installed unicast CCMP key for supplicant 60:33:4b:2c:de:c0 8/9/11 8:43:21.000 AM natpmp: Binding added for udp, 173.164.164.17:32770 to 10.0.1.104:4500 with lifetime 7200 8/9/11 8:43:21.000 AM natpmp: Binding added for udp, 173.164.164.17:32771 to 10.0.1.104:5353 with lifetime 7200
That’s it. You now have syslog data being captured on your Mac OS X Lion server from your AirPort Extreme base station!
Cookbook: Snow Leopard, RVM, Ruby on Rails
August 1, 2011 | Comments Off
Recently I decided to clear out my RVM environments and start fresh. I’m running on a Snow Leopard MacBook Air. Here are the steps I went through.
$ curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.0.tar.gz $ tar xvf readline-6.0.tar.gz $ cd readline-6.0 $ ./config && make && sudo make install $ cd .. $ rm -rf $HOME/.rvm $ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) $ rvm install 1.8.7 -C --with-arch=x86_64, --with-readline-dir=/usr/local $ rvm system $ rvm gemset export system.gems $ rvm 1.8.7 $ rvm gemset import system $ rvm --default 1.8.7
The following pages were helpful in figuring this out.
- RVM, Mac OSX 10.6 and Ruby 1.8.78 p302 Install Error
- getting ruby to use readline instead of libedit
How I setup Ubuntu 11.04 Server using VirtualBox on a MacBook Air
July 22, 2011 | Comments Off
Download and install the latest version of VirtualBox from http://www.virtualbox.org. As I write this article the current version is 4.1.
Download the Ubuntu 11.04 Server .ISO file from http://www.ubuntu.com. I first tried the 64-bit version but it seems that VirtualBox has trouble with it. The 32-bit version worked just fine, and for the sort of development tasks I am planning it will be okay so I didn’t look any further into why the 64-bit version failed to install.
Create a new virtual machine. I called mine “ubuntu-11.04″. This one will be used as a basis for other machines I clone. I went with 512MB of RAM and 40GB of hard drive space, making sure that the hard drive was configured to grow dynamically. I accepted all of the default settings during the installation process. I did not install any additional packages at this stage. Since I plan on using Vagrant (http://vagrantup.com) to manage my virtual machines I chose to name this machine ubuntu and gave it a user name of “Vagrant Manager” with a login of “vagrant” and a password of “vagrant”.
Shutdown the virtual machine and then create a snapshot (I called mine “Fresh Install”).
You are now ready to create a clone of this machine and start playing around. Right-click on the virtual machine you just created and select “Clone…” from the context menu. Give your new virtual machine a unique name and be sure to check the “Reinitialize the MAC address of all network cards” option. I assigned the name “vagrant-ubuntu-natty” since that is in keeping with the conventions mentioned on the Vagrant site. I choose to only clone the current machine state.
Boot up the new virtual machine once the clone operation completes. Log in using vagrant/vagrant. You will now need to correct issues with the ethernet drivers. Basically, when you asked VirtualBox to reinitialize the MAC addresses it caused the operating system to no longer recognize the virtual ethernet adapter hardware. The steps to correct this are:
sudo rm /etc/udev/rules.d/70-persistent-net.rules
sudo service udev restart
sudo shutdown -r now
By running these three commands your virtual machine will be reconfigured to now recognize the new virtual ethernet adapters with their reinitialized MAC addresses.
Now you can proceed to install the VirtualBox Guest Additions software. Start by updating the Ubuntu software using these commands:
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y install linux-headers-$(uname -r)
sudo apt-get -y install dkms
sudo shutdown -r now
At this point you are actually ready to do the installation of the Guest Additions. From the Devices menu in VirtualBox select the “Install Guest Additions…” menu item. This will “insert” the CD containing the guest additions software into the virtual machine.Now, from your virtual machine run the following commands.
sudo mkdir /tmp/cdrom
sudo mount /dev/cdrom /tmp/cdrom
cd /tmp/cdrom
sudo ./VBoxLinuxAdditions.run
Note, the installation of the Window System drivers will fail. This is okay; remember, we are running the server variant of Ubuntu and don’t have any of the windowing system components installed.
Now change the hostname for the system so it can be used as a Vagrant base box.
sudo hostname vagrant-ubuntu-natty.vagrantup.com
Edit the /etc/hosts file and change the second line where localhost is defined. Set the fully qualified domain name for the host and the short name for the host.
Edit the /etc/hostname file and replace “ubuntu” with “vagrant-ubuntu-natty”.
Edit the /etc/resolv.conf file and replace the domain and search values with “vagrantup.com”.
Reboot the machine once more using
sudo shutdown -r now
It is now time to setup the rest of the required software on the guest in order for it to be used as a Vagrant base box.
Start by editing /etc/sudoers using
sudo vim /etc/sudoers
Add or change the line giving sudo access to administrators to read as follows:
%admin ALL=NOPASSWD: ALL
Add the following line right after the “Defaults env_reset” line:
Defaults env_keep="SSH_AUTH_SOCK"
Run the command:
sudo /etc/init.d/sudo restart
Now setup the software Vagrant relies upon to provide all it’s goodness.
sudo apt-get install -y ruby-dev
sudo apt-get install -y rubygems
sudo apt-get install -y puppet
sudo apt-get install -y chef
sudo gem install chef
sudo apt-get install -y openssh-server openssh-client
When installing the chef package (above) you will be prompted for the URL of the Chef server. Just press enter here and ignore that step. We are only interested in chef-solo, and this URL is only used by chef-client. The package installer will go ahead and configure the chef client to run automatically. We now need to disable this by running the following command:
sudo /usr/sbin/update-rc.d chef-client disable
Edit the file /etc/ssh/sshd_config and add the following line (case matters here):
UseDNS no
Configure a secure key pair for our new Vagrant base box by running the following command on the host system.
ssh-keygen -P "" -t rsa -C "Some meaningful comment" -f ./vagrant-id_rsa
This command will create two files in the local directory called vagrant-id_rsa and vagrant-id_rsa.pub. You will need to copy vagrant-id_rsa.pub into the ~/.ssh/authorized_keys file on the guest system. To do this you will need to setup port forwarding between the host and guest. The first step is to learn what the IP address of the host and guest systems are. Use the following command to view the network adapters that are configured on each system:
ifconfig
Run this on both the host and guest. Once you know both IP addresses you need to add a port forwarding rule in Virtual Box for the SSH port. This is done by selecting the “Settings…” menu item from the “Machine” menu. Once you have the settings dialog box open select the “Network” button and then open the “Advanced” section. You will see a button labeled “Port Forwarding”. Press it to open the port forwarding rule editor. Here you need to create a rule as follows:
Name: SSH
Protocol: TCP
Host IP: <fill in host IP address from ifconfig>
Host Port: 9999
Guest IP: <fill in guest IP address from ifconfig>
Guest Port: 22
Close the panel and dismiss the settings dialog box. You should now have a port open between the host and the guest for SSH/SCP. To verify this, enter the following command in a terminal window on the host system.
ssh -p 9999 vagrant@<host ip address>
When prompted for a password enter “vagrant”. You should now be in an ssh session on the guest system. If this worked you are ready to propogate the public key generated earlier. You can exit out of the SSH session now by typing exit in the guest. Back on the host type the following command to copy the public key.
cat vagrant-id_rsa.pub | ssh -p 9999 vagrant@<host ip address> 'sh -c "cat - >>~/.ssh/authorized_keys"'
You will be prompted for the guest password. Type “vagrant” again. You will now want to test that the key propogated successfully. On the host system enter the following commands.
ssh-add ./vagrant-id_rsa
ssh -p 9999 vagrant@<host ip address>
If everything worked in the earlier steps you should be in an SSH session on the guest without the need to enter your password!
As a final step before packaging a vagrant base box you should clean things up in the guest by running the following commands:
sudo apt-get clean
sudo apt-get autoclean
You are now ready to package the vagrant base box. Back on the host system in a terminal window first create a Vagrantfile that points to the SSH private key. Here is an example of what it might look like if you decide to copy your key (generated earlier). Call this file Vagrantfile.pkg.
Vagrant::Config.run do |config|
config.ssh.private_key_path = "lcl-vagrant-id_rsa"
end
Now invoke this command in the terminal window to create the package.
vagrant package --base vagrant-ubuntu-natty --include lcl-vagrant-id_rsa --vagrantfile Vagrantfile.pkg
The packaging takes a little while. Once it completes you should test the base box using these steps:
mv package.box vagrant-ubuntu-natty.box
vagrant box add lclbase32 vagrant-ubuntu-natty.box
mkdir test_environment
cd test_environment
vagrant init lclbase32
vagrant up
vagrant ssh
If all went well you are now finished with building a Vagrant base box. Congratulations!
Git Cheat Sheet
March 19, 2011 | Comments Off
After watching from the side lines for a few years as git gathered a following I finally made the switch out of necessity as a result of doing more projects in Ruby on Rails. The projects I work on are all hosted in the cloud (Heroku, Engine Yard, or directly on Amazon EC2). Many of the tools I use support direct deployment from git. So I now find myself migrating all of my projects from subversion to git.
I tend to write down a lot of notes as I learn a new technology or tool. The migration to git is no different. What is different is how GitHub (the hosted git solution I am using) makes it possible to record just about anything in what they call a gist. This is turning out to be a very useful tool for me. It is a great place to store little bits of code or notes.
Notes on setting up a Ruby on Rails Environment for Ubuntu 10.04.1 LTS
March 19, 2011 | Comments Off
Clone virtual machine
Boot up, open terminal window and run the following commands in order to configure network. (Updates the MAC address for the virtual network adapter.)
# rm -fr /etc/udev/rules.d/70-persistent-net.rules # shutdown -r now
Packages to install…
sudo apt-get install vim sudo apt-get install build-essential sudo apt-get install curl sudo apt-get install zlib1g-dev sudo apt-get install libssl-dev sudo apt-get install libreadline5-dev sudo apt-get install sqlite3 libsqlite3-dev sqlite3-doc sudo apt-get install libxml2 libxml2-dev libxslt1-dev sudo apt-get install libyaml-dev sudo apt-get install postgresql-8.4 postgresql-client postgresql-client-8.4 postgresql-doc-8.4 sudo apt-get install postgresql-server-dev-8.4 sudo apt-get install pgadmin3 sudo apt-get install libcurl4-openssl-dev sudo apt-get install git-arch git-doc git-csv git-svn git-email git-daemon-run git-gui gitk gitweb sudo apt-get install ssh subversion libgssapi-perl libio-socket-inet6-perl rssh molly-guard sudo apt-get install openssh-blacklist openssh-blacklist-extra socklog-run sudo apt-get install rdist makejail subversion-tools db4.8-util sudo apt-get install autoconf autoconf2.13 autoconf-archive gnu-standards autoconf-doc libtool gettext gettext-doc libtool-doc sudo apt-get install ruby sudo apt-get install ruby1.8 ruby1.8-dev rubygems1.8 ruby1.8-examples ri1.8 rubygems-doc graphviz graphviz-doc sudo apt-get install flex bison bison-doc
Setting up RVM
# System Wide RVM Installation bash < <( curl -L http://bit.ly/rvm-install-system-wide ) # Setup of user defaults edit /etc/adduser.conf - enable the EXTRA_GROUPS stuff and make sure the user is added to the 'rvm' group edit /etc/skel/.bashrc to add the necessary RVM initialization stuff sudo su - rvm install ruby-1.9.2-p0 rvm install ruby-1.9.2-head
(notes on config of Postgres on Ubuntu https://help.ubuntu.com/community/PostgreSQL)
curl ftp://ftp.ruby-lang.org:21//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz > ruby-1.9.2-p0.tar.gz tar xvf ruby-1.9.2-p0.tar.gz cd ruby-1.9.2-p0 ./configure --prefix=/usr/local/ror --enable-shared make make test sudo make install
Create a file called /usr/local/ror/ror_env.sh. Add the following to it:
export PATH=/usr/local/ror/bin:$PATH
Run the command
sudo ln -s /usr/local/ror/ror_env.sh /etc/profile.d/ror_env.sh
Log out / Log in
Open a terminal window
$ which ruby /usr/local/ror/bin/ruby $ which gem /usr/local/ror/bin/gem
sudo su - gem update --system gem install rails -v 3.0.3 gem install sqlite3-ruby gem install pg gem install passenger
passenger-install-nginx-module --prefix=/usr/local/ror --auto-download --auto
Adding MongoDB to my Mac OS X Snow Leopard Ruby on Rails Environment
November 15, 2010 | Comments Off
Tonight I wanted to add MongoDB to my Mac OS X Snow Leopard Ruby on Rails Environment. Refer to my earlier post for details of how I setup my environment. This post assumes your environment is setup according to the instructions found there.
I wrote the following script to handle installation of MongoDB. I decided to grab the pre-built version of MongoDB from the project site and then place the files under the /usr/local/ror directory tree.
#!/bin/bash
# Get and extract a copy of Mongodb
curl http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.6.4.tgz > mongodb-osx-x86_64-1.6.4.tgz
tar xvf mongodb-osx-x86_64-1.6.4.tgz
curl http://downloads.mongodb.org/docs/mongodb-docs-2010-09-23.pdf > mongodb-docs-2010-09-23.pdf
# Move files into final locations
(
cd mongodb-osx-x86_64-1.6.4
sudo cp -R * /usr/local/ror
sudo chmod a+r /usr/local/ror/GNU* /usr/local/ror/README* /usr/local/ror/THIRD*
sudo gem install mongo
)
(
sudo cp mongodb-docs-2010-09-23.pdf /usr/local/ror/share/doc/mongodb.pdf
sudo chmod a+r /usr/local/ror/share/doc/mongodb.pdf
)
Download the script tarball (mongodb.sh.tar), extract it into a folder like /tmp and then run sh ./mongodb.sh. This will download the MongoDB binaries and place everything in the /usr/local/ror tree.
One final step. Since you are running on a Mac you might want to check out a cool MongoDB client called MongoHub. You can learn more and download it from the official site.
Setting up my Snow Leopard Ruby 1.9.2, Ruby on Rails 3.0, Nginx, Passenger development environment
November 14, 2010 | Comments Off
Snow Leopard ships with Ruby 1.8.7 installed and an older version of Ruby Gems. I am planning on doing some projects with Ruby on Rails and wanted to setup a current environment. My requirements were:
- Ruby 1.9.2
- Rails 3.0
- PostgreSQL 9.0
- Nginx
- Passenger
You should download and install the Mac version of PostgreSQL 9.0 from the folks at EnterpriseDB. You will need to register on the site in order to do the download. Be sure to download PostgreSQL 9.0.1, not one of their Plus packages. It is a nicely packaged installer for the freely available version of Postgres.
Once you install this software you should have a file called pg_env.sh in the /Library/PostgreSQL/9.0/ directory. This file should be added to your /etc/profile. Here is an example of what mine looks like:
# System-wide .profile for sh(1)
# This has to be set to something in order for path_helper (below)
# to update it with paths found in the /etc/manpaths.d directory.
MANPATH=/usr/local/share/man; export MANPATH
# Setup the PostgreSQL environment.
. /Library/PostgreSQL/9.0/pg_env.sh
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
Be sure to log out and log back in before continuing with these instructions. This is important to make sure your PostgreSQL environment variables are set properly.
One of my goals with this setup is to keep everything independent of the default tools that ship with Snow Leopard. To do this I decided that all of my Ruby on Rails setup will be located in the /usr/local/ror directory tree. Here is a script I developed to setup my Ruby on Rails development environment.
#!/bin/bash # Get and extract a copy of LibYAML curl http://pyyaml.org/download/libyaml/yaml-0.1.3.tar.gz > yaml-0.1.3.tar.gz tar xvf yaml-0.1.3.tar.gz # Build LibYAML ( cd yaml-0.1.3 ./configure make sudo make install ) # Get and extract a copy of Ruby 1.9.2 curl ftp://ftp.ruby-lang.org:21//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz > ruby-1.9.2-p0.tar.gz tar xvf ruby-1.9.2-p0.tar.gz # Build Ruby 1.9.2 ( cd ruby-1.9.2-p0 ./configure --prefix=/usr/local/ror --with-arch=x86_64 --enable-shared make make test sudo make install ) # Update Ruby Gems sudo gem update --system # Install Gems sudo gem install rails sudo gem install sqlite3-ruby sudo gem install pg sudo gem install passenger # Configure Passenger for Nginx (downloads Nginx and PCRE automatically) sudo passenger-install-nginx-module --prefix=/usr/local/ror --auto-download --auto
Download the script, un-tar it and place it in any directory you want. I call the script doit.sh, but you can name it anything you like. Run the script using the command shown below.
$ sh ./doit.sh
Once the script completes you need to add /usr/local/ror/bin to your path. I did this by editing my /etc/paths file. Here is a copy of the file on my machine:
usr/local/ror/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin
One more logout/login and you are done. Have fun playing with Ruby on Rails on your Mac!
Heading to Big Nerd Ranch later this month!
October 3, 2010 | Comments Off
One of the podcasts I listen to on a regular basis is called MacBreak. The hosts are Leo Leporte, Alex Lindsay, Andy Ihnatko and a rotating list of other Mac/Apple/iOS luminaries. If you aren’t familiar with it head over to http://twit.tv/mbw and have a listen. It is highly recommended for anyone interested in all things Macintosh (and iOS too).
A few episodes ago Alex Lindsay mentioned that his company was going to be hosting a one week Commuter iOS Class at their San Francisco offices so their team could come up to speed developing applications for iOS devices. The class would be taught by the folks from Big Nerd Ranch. Usually the BNR folks teach classes from their monastery at a secret location just outside Atlanta, Georgia. Having them venture out to San Francisco; wow, what an opportunity. Oh, did I mention that Alex Lindsay also announced that there were a limited number of spots open to the unwashed masses to attend and the class would be held from 2:00 p.m. until 10:00 p.m. each day so folks could continue to do at least part of their day jobs.
All in all this just sounded too good to pass up so I fired off an e-mail to the folks at BNR to let them know I wanted to attend. My fingers were crossed because I know how quickly their classes fill up. Needless to say I wouldn’t be writing this post if I didn’t get in.
So, I’m off to the Pixel Corps offices later this month to soak up some more iOS goodness. Hope to see a few of you there too.
BTW: Here is a link to the course description for anyone curious.
Attending iOSDevCamp 2010 – Building Meet4Drinks
August 19, 2010 | Comments Off
![]()
I am attending the yearly iOSDevCamp event this weekend in SanJose, CA. This is a great event where iPhone/iPad software developers and UI/UX designers come together for a weekend of coding and exploration of ideas around how to use iOS devices. The event organizers hold something called a Hackathon where attendees form ad-hoc teams around shared application ideas and spend two full days designing and coding like crazy to build something cool. Everyone has a great time and meets like-minded folks in the developer community.
Earlier this year, in April the event organizers held a special iPadDevCamp. That was my first exposure to this great event format. You can read more about that experience over on the Powered By AMP blog. For that event I was on a team with some co-workers from Auctiva. We built a prototype of an e-commerce sales management tool for AMP sellers.
This time I’m attending solo, without a cadre of other Auctiva designers and developers. I want to explore developing location-aware applications for the iPhone and put together a basic idea for an app. It is called Meet4Drinks, and you can read more about it at http://www.meet4drinks.net.
If it sounds like something you would enjoy, it’s not too late to register today. The event starts tomorrow (Friday) evening and goes through Sunday evening. Visit http://www.iosdevcamp.org to register.
Look for updates on Meet4Drinks next week, once my head is back above water after the event. Hope to see you there.



