Flashed my Motorola K1M to Generic Motorola firmware
Anyone who has used a Motorola K1M “KRZR” phone from Verizon Wireless probably noticed how laggy its UI was, especially when doing alot of texting. It got so bad I had to clear my SMS mailboxes and hard-reboot the phone just to keep it usable. Then, when I got my N810 and paired it with my phone over BlueTooth, I noticed the phone doesn’t expose all the BlueTooth functionality it’s supposed to, for example the FTP profile didn’t expose a complete filesystem.
It turns out Verizon has their own custom firmware for this phone, which cripples features they don’t think I should have, and slows the phone down with all their crap. After I read this post on flashing the K1M to the original, generic Motorola firmware, I started to play with the many and varied tools and steps required to successfully flash a phone.
After I scrounged around the ‘net and found stuff like the Motorola USB Drivers (M-USB), Motorola Phone Tools (MPT), Motorola Phone Support Tools (PST), Qualcomm Phone Support Tools (QPST), BitPim, P2KSEEM SD, and RadioComm, I was able to connect to my phone over USB and backup the configuration per the monster2 guide. I flashed the generic Motorola firmware, and after some fiddling and one false start, I got my phone running for voice, SMS, MMS, and Mobile Web under the generic firmware, with no Verizon branding.
While the generic firmware has a UI that feels a bit antiquated compared to the slick Verizon UI, the generic firmware is dramatically faster, with no observable lag on anything local, and no more than normal lag sending messages and operating the mobile web browser.
Yes, my Verizon warranty is voided now, but who cares? I have a phone that works now, with no crippled BlueTooth.
The thing that most surprised me about the experience is how bad the carriers’ tools are. To perform the cross-flash you use tools that are supposed to be internal tools from Motorola, QualComm, etc, and let me tell you, these tools are for SHIT. In particular, Motorola’s Phone Support Tools are very flaky, and when they don’t work it’s usually silently or in the form of a crash, and not an actual message. This bit me the first time I went to flash my phone, as it failed to read some information from the phone without saying as such, and since I didn’t know what the info was supposed to look like I didn’t notice it. It took another flash of the firmware and copying the configuration from a friend’s RAZR to get it back again. No wonder telecoms is such a fucked-up industry!
Overall, flashing a new firmware is a satisfying way to spend an evening, in a pseudo-rebellious stick-it-to-the-man sort of way, but it’s not for the faint of heart or the impatient. Despite the existence of a multitude of guides and how-tos and FAQs, there’s always something slightly different about your situation, that requires subtly different steps to get right, and the discussion boards like HowardForums are fragmented, often incoherent, and not infrequently wrong. That said, the satisfaction one gets from gloating about one’s custom firmware while one’s friends muddle along with whatever Uncle Verizon gave them makes the process well worth it.
Surprise! No turning back from Verizon FiOS!
There’s a typically breathless article on SlashDot today about how Verizon cuts the copper lines to your house when they install FiOS, as part of an evil corporate Zionist neocon conspiracy to lock you in to Verizon’s service at the exclusion of all the other telcos who would otherwise service your telecom needs.
The piece suggests that Verizon is sneaking this in under the radar, and yet within ten minutes of reviewing Verizon’s FiOS literature it became clear that my copper lines would be cut. It wasn’t underhanded; I went ahead anyway. It’s one of those decisions individuals make on their own, when government bureaucrats aren’t available to decide for them.
I hate Verizon, and all they stand for. They’re a decrepit, old-economy, backwards-thinking telco with shitty leadership and even worse customer service. But they also offer broadband speeds in excess of ten times what I can get w/ ADSL, and as bad as Verizon may be, they’re saintly compared to Cox, the friendly neighborhood CATV Gestapo. So, in a world of evils, you pick the lesser evil. If you don’t like it, you can…you know…not get FiOS.
May have identified FiOS router slowdown problem
Last time, I noted how my Verizon-supplied ActionTec router seemed to flake out after a week or so of heavy use, such that its DNS requests started to fail. I switched my internal router to use OpenDNS instead of the router’s own internal DNS, thinking that would solve the problem.
Perhaps not surprisingly, it didn’t. However, when I awoke this morning to find my router performance sucking again, this time I poked around the logs on the ActionTek router a bit more. I ran across this gem in the security log:
Jun 30 11:48:52 2007 Firewall Error Firewall internal NAT Error : connection pool is full. No connection created
Aha. That does make sense. If the NAT table is full, new connections will come at the expense of older ones.
So, how can I increase the size of the NAT table, or somehow otherwise resolve this issue?
Well, poking around the GUI I see no options to control the size of the NAT table, so I’ll have to find a way to get it to not use a dynamic NAT table. Fortunately the router has a ‘Static NAT’ option, which allows you to configure an IP on the internal LAN, an IP on the external WAN, and instruct the NAT subsystem to map ports directly from one to the other, avoiding the need for a NAT table.
Sadly, this option doesn’t let me specify ‘whatever the current WAN IP address is’, so depending upon how often Verizon expires my public IP, I may have to fiddle with this setting. I knew FiOS was too good to be true.
UPDATE: Thanks to a pointer from Christian in the comments, I got the Actiontek router into bridge mode, and my NAT problems are over.
More trouble with FiOS Router
The problem I reported earlier wherein my Verizon-supplied router stops responding to DNS requests has come up again, only this time it’s intermittent failure, not an outage. A couple days ago my roommate bitched that no DNS queries were resolving; at the time I wrote it off as end-user delusion, but I am beginning to suspect it was another instance of this router problem.
My hope is that the router’s DNS server is just flaky and/or doesn’t run well under heavy load, so I’ve adjusted my OpenBSD router’s BIND configuration to forward DNS requests to OpenDNS instead of the FiOS router. Hopefully that fixes it; I’d hate to have to engage Verizon’s dreaded Endless Loop Support Process(tm).
First sign of trouble in paradise: FiOS Hiccup
Having had FiOS running for less than a week, I’ve hit my first hiccup. This morning I woke up to find that all of my DNS requests were timing out. I had things like Google and GMail in my DNS cache, so those still worked, but attempts to resolve new hostnames were timing out. WTF?
I poked around the Verizon router for a bit, and the only thing untoward in the log was:
daemon.warn cLink: clink1: ioctl(DRV_GET_MY_NODE_INFO) failed, res=-1: Bad address.
The router is running some customized flavor of BusyBox, which I know fuck-all about, so I dunno if that’s normal or not. I do know that I dropped to a shell within the router’s telnet admin environment, and tried a ping www.google.com, which timed out trying to resolve the hostname. Doubting that Verizon’s DNS servers could be down, I used the router’s web interface to reboot it, and now it’s come back up with DNS working fine. Not a good sign. I’ll keep an eye on it.
UPDATE: Finally solved the problem
FiOS Installed and Running
The Verizon techs just left, having installed the 30/5 pipe as promised. Speed tests confirmed download speeds in the high-20Mbit/s range, though upload speeds were stuck at 2.5Mbit/s, not the specified 5Mbit/s. However, I ran two simultaneus speed tests to different servers, and both turned in 2.5Mbit/s, so I’m satisfied my pipe is as big as they say.
A tech (Carl) arrived very early. The scheduled install time was between 1 and 5 PM; he arrived at 10:30 AM. I quickly threw on some underwear and let him in. He did his thing for a few hours, then around 2 PM it came time to wire up the router. He had another tech with him (Rodney) who seemed to be doing the datacomm bits. Setup was pretty painless, though time consuming.
The techs installed a Verizon-branded Actiontek MI424WR wireless router. They used the coax wiring in my townhouse to connect the router to the box they attached to my house. To simplify setup, I plugged my laptop directly into their router, even though I had no intention of using it that way. They had some software on a thumb drive they wanted to install, which goes through setting up a verizon.net account and installing a ton of crap. I opted out of all the crap, and only begrudgingly created a verizon.net account.
As soon as the techs left, I started working on the router. First, I enabled the Telnet configuration environment and turned off the wireless. Second, I moved its LAN settings from 192.168.1/24 over to 192.168.2/24, since 192.168.1/24 is already my internal LAN. I then hooked up wintermute, my OpenBSD firewall/router box, to one of the LAN ports on the Verizon router, updated wintermute‘s “wan” IP to 192.168.2.2, pointed its gateway and DNS at the Verizon router, and voila. I made wintermute the DMZ host to simplify configuration.
Why didn’t I just yank that router and use wintermute? Two reasons. First, wintermute doesn’t have the magical coax port the Verizon router uses. Second, Verizon says they want you to use that router coz it has special remote diagnostic stuff in it. Whatever. Fine w/ me.
I quickly ran a speed test now that wintermute was in the loop, and got horrible (worse than DSL) performance. The problem? I still had wintermute configured with altq settings assuming DSL bandwidth. I quickly opened the floodgates and ran the perf tests again. There was clearly a slowdown (mid-20′s instead of high-20′s) and wintermute‘s interrupt time jumped to 60%, but it’s good enough for now. Eventually I’ll need to replace wintermute with a box that can handle the full 30Mbits/s throughput.
At this point, I’m very happy with FiOS. Once my friend comes over to try some BitTorrents, I’ll know if Verizon is going to do any bullshit traffic shaping to cockblock me from using all the bandwidth I paid for. Best for them if they’re not…