Unbricking an Android Tablet

This whole thing began innocently. D-Rock had picked up an Arnova 9 G3 tablet, and wasn’t satisfied with a few things. I wasn’t satisfied that he bought an off-brand tablet, at a truck stop, for 300% its value without asking me for advice, but that is a different story. Maybe truck stop tablets are mostly great…I don’t know. I suspect most are like the Arnova 9G3: shit.

So, the main two gripes were
1) No Google Play
2) Screen finicky at best

I figured I could have both knocked out with three steps
1) Update firmware
2) Get root
3) Push Google* apps over ADB

Things got complicated by the fact that Arnova’s support site doesn’t include firmware for this device. I’m guessing that is intentional, as the factory method of deploying firmware updates involves placing an updated image on the root of an SD card and updating via recovery. That would be nice, but the Arnova 9 G3 has a bug wherein entering recovery mode spawns a black screen. That’s it…a blank screen.

My Linux machine wasn’t seeing the tablet as a USB device while in ‘recovery’ mode anyhow, so I couldn’t mount and do a dd command. Sort of shit out of luck for my normal way of doing this.

The next resort was to blow the cobwebs off Katie’s old XP laptop and install some software to flash new firmware via Windows software. Not my wheelhouse. I located a custom firmware allegedly compatible with the device, installed some drivers, and started flashing via the Rockchip Batch Tool. Midway through the flash process, the firmware push encountered a driver error. The result was the device being stuck in the killer ‘recovery mode’ screen…aka just a blank, bricked $350 paperweight.

Since the firmware was in a borked state, the reset and power buttons were useless. My last thought was to attempt to create a short in order to get the device to reset, and in turn for the XP box to recognize the device with a new set of drivers. Here’s to that…

opening arnova tablet

access granted

I managed to locate contact points that did the trick…a small click and the device showed up as new hardware. I manually selected the drivers I tracked down, and bingo

bricked tablet

login gained

Up and at ‘em. The flash worked this time around. Worthy of mention, it worked with a nearly dead battery. I was lucky not to brick the thing again…not having a recovery screen makes stuff like that tough to gauge.

The screen seems to work a lot better with the new firmware and without the bloatware. One for two. Also, two for two

play store onarnova

play granted

Let it go on record that this is the last time I intend to work on an Arnova device. Luckily, the camera was functional, allowing me to leave Derek some custom wallpaper:

*REDACTED*

Stop buying electronics at truck stops, D-Rock. Just don’t.

How To Fix a Hitachi Leaf Blower

A few months ago, I picked up a killer leaf blower on Woot. Our yard is devoid of leaves.

Last week, I tried to fire it up to clean the pine needles off of our steps…no dice. The thing wouldn’t fire up. I checked everything obvious…pulled the spark plug to see if it was flooded…ensured the kill switch circuit was intact…checked the fuel line for a vacuum…nothing. I came to the conclusion that the issue was with the primer bulb, as it was ‘pushing’ but not ‘pulling’ air when depressed. I was getting a bunch of pressure in the fuel tank, but no fluid was making it to the primer bulb itself.

Time for leaf blower surgery.

hitachi leaf blower

well, this blows

I figured that I could take apart the air filter and figure out how to bypass the primer bulb somehow. It turns out that the filter assembly is pretty accessible. Directly behind the drop-down filter cover, there are two inviting phillips head screws…

hitachi two stroke gas blower repair

well, screw this

I backed said screws out enough to see a disconnected tube staring right at me. Sure enough, it was the rubber tube that feeds the primer bulb. See below—-v

hitachi fuel line disconnected leaf blower

well, this is hosed

It looks like the engineers at Hitachi sunk a spring in the end of the hose to avoid kinks, and relied upon friction to keep the hose in place. It looks like a design flaw, as the two-stroke’s vibrations had the thing rattled loose in much less than an hour’s worth of operation time.

Quick fix though…the unit fired up immediately upon reconnect and priming. Back in business.

It might get old pulling the filter assembly off if this hose becomes a nagging issue. On the plus side, this thing was a steal and is crazy overpowered. I hate to say that I would still recommend this even with the flaw…it really does blow.

Arduino 120V AC Relay Example

I got tired of poking around with LCD drivers with my Arduino. Time for a quick project to mix it up…staring at a surge protector always puts 120V on my mind. As it turns out, I tore apart an old humidifier a while ago on my ‘workbench.’ Monday night is Katie’s reality TV night…time for something sweet.

Investigating duty cycles on this plastic fan:

fan hack

fan hack

I figured that I could horse around with my PowerSwitch Tail, and make it somewhat mimic a PWM 5V setup. I was curious how long I would have to ‘pulse’ the switch with juice to keep the fan constantly rolling. I started with it fully on, and kicked my ‘active’ duty cycles lower until I reached a nearly-continual state of motion. Pause for Arduino code snippet:

/*
PowerSwitch Tail Template

120V AC Driver w/ LED indicator

Joseph Swanson
2011 | http://swantron.com
*/

void setup() {
// declare pins (13, 7) for writing
pinMode(13, OUTPUT);
pinMode(7, OUTPUT);
}

void loop() {
// Fire relay / LED
digitalWrite(13, HIGH);
digitalWrite(7, HIGH);

// Configure for “on” time
delay (50);

// Kill relay / LED
digitalWrite(13, LOW);
digitalWrite(7, LOW);

// Configure for “off” time
delay (950);
}

Pause for a small small-video break:

As that code and vid indicate, 1/20th of a second is all it took to keep the fan rolling, with 19/20th of a second idle. Not bad. Not sure what the takeaway is, but that is something to mention.

Put that knowledge somewhere safe, provided the question of humidifier fan duty cycles should spring up.

Spoofing User Agent Types from the Command line

I’m back on the command line…look out…

ubuntu terminal spoofing user agents

green on black...my favorite

So, I am still poking away at various ways to interface between the bash and various web components. This stuff is still shaking out of my Twitter to CLI to LCD project. I have been using some of the usual suspects (wget, python url libraries, etc) in an effort to find one that is best suited to sniffing and parsing html info. I have found that writing to serial is the most fail-proof means of mashing around data quickly, so that is my inspiration.

Anyhow, I was horsing around with curl on the command line. It turns out, that spoofing user agents is pretty simple to implement.

Take this two-line one liner for instance:

swantron@Dell15:~$ x=10
swantron@Dell15:~$ for (( y=1; y<=x; y++)) ; do curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" swantron.com ; done

In a nutshell, this is acting to snag this site ten times, with credentials indicating the machine is running Windows 2000 and MS Internet Explorer 5.1. The success is indicated by my server statistics:

Before:

Windows 2000 IE 5.1

Windows 2000 IE 5.1

After:

IE 5.1 on Windows 2000

IE 5.1 on Windows 2000

Not too bad. I am considering using this as a testing tool for my site. Messing around with PHP and CSS…I can put together a quick regression using some legacy operating systems and browsers to make certain that I can still snag my content. Granted, the example setup may seem like gross overkill, but as those stats indicate, I do see quite a few requests from ancient machines. Makes you wonder..

Anyhow, this layout is in need of some serious testing. If anyone is interested in a copy, drop me a line. Cheers.

RC Helicopter Tear Down

A while back, I collected my first Woot BOC. The prize crap in the bag of crap was, without any doubt, the radio controlled Batman helicopter. Great Scott…

batman rc helicopter

shadowy

Wrong movie catch phrase, right? Well, so too are the aerodynamics of a helicopter SHAPED LIKE BATMAN. She is not a very sky-worthy vessel. The rotors push air directly into the clear plastic tab connected to his booted feet…it is not stable at all. Time to tear it up.

helicopter tear down

injured vet batman

I figured that I could remove the obstructive plastic and have a machine that would function well enough to navigate around the garage-shop. I removed the guys legs, which were light enough to be approximated with a zip tie.

As I had hoped, the new lower portion acted to dampen some of the erratic flight.

black hawk up

black hawk up

It was stable enough to allow me to snap that picture…not a possibility with the unmodified original.

Curiosity got the best of me, as it always tends to. I had to break this apart to see how it worked. I am sort of impressed I took the intermediate steps this time…most of my tear down sessions are done quickly and rabidly.

batman guts

guts

This was sort of impressive, actually. The foam chest cavity was hollow to allow for the constituent components…including the mechanical gears. Light, protective, and durable…the triple threat. It was, until I removed it completely…

bare bones

bare bones

There you have it…pretty basic design. Two variable motors, an IR receiver, a battery, a DC power jack, a switch, some caps and resisters, and a chip to run it. The IR sensor was hidden in Batman’s utility belt. Great Scott that is clever.

After all of that, this puppy still flies…

flight worthy

flight worthy

I was pretty gun shy to let that rip. It took a couple of dives in my first two picture attempts, wrapping the battery cord around the rotor assembly. It still works…pretty tough little guy.

Next step…I’m going to get into that controller. It acts as both the charging unit and IR sender, in addition to providing the variable control to the motors. It shall be awesome. Stay tuned.

Twitter CLI Teaser

I sort of forget what my original project entailed…something about tweeting via the command line, for Arduino purposes. You can pretty much just toss a bunch of words in a hat, and add ‘Arduino’ and ‘Command Line’ to them, and there you have one of my typical projects.

Anyhow, here we find ourselves. I am missing some dependencies with OAuth, but have managed to get twitter working from an interactive python shell:

cli twitter

command line-y

This section is as much for my reference as it is for public knowledge…I snagged the commands that I ran to snag my comments. It first prints swantr0n (my dev account) and then my primary Twitter feed, @swantron

swantron@mini9:~$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import twitter
>>> api = twitter.Api()
>>> feedSwantron = api.GetUserTimeline(‘swantron’)
>>> feedSwantr0n = api.GetUserTimeline(‘swantr0n’)
>>> print [ x.text for x in feedSwantr0n]
['development account for @swantron | tune into http://t.co/SpDFBkK for projects', 'hello world']
>>> print [ x.text for x in feedSwantron]
['@vftb ...you better believe it', 'Twitter Project Teaser : http://t.co/7ZrOLUn | one step closer to tweeting from the #CLI ... might take a run at make it tweet', 'Might need to implement some sleeves into my wardrobe... @adafruit just flipped the script with open source cuff links', 'unsafe at any speed... updating #ubuntu on the road http://t.co/Q8gfc56', 'Upgrading Mini 9 to #Ubuntu Natty http://t.co/7yT9w81 | posting to kill time... review here ( http://t.co/RM675lX ) lunch-aft on the morrow', 'http://swantron.com/basic-mower-cord-repair/ #DIY lawn mower repair from a #math major. spoiler: it works', "#arduino no you didn't http://swantron.com/html-to-python-to-arduino-to-lcd/ #LCD project, stepped up a bit", 'working on a python script to dump info from web to LCD http://swantron.com/python-teaser/ #arduino', 'http://youtu.be/MpomhE6dgww video of #boc unboxing (for the win)', '#woot bag-o-crap unboxing @ http://swantron.com/woot-boc-unboxing/ not too shabby', 'http://swantron.com/compiz-error-in-ubuntu-natty/ still finding some compiz issues in #ubuntu 11.04', '#Arduino project @ http://swantron.com/command-line-lcd-arduino-interface/ | driving LCD screen via command line', '@RobotGrrl... what version are you running? I had no problems with IOIO / Droid 2 (froyo 2.2)', 'Easy LCD #Arduino Display | http://swantron.com/easy-lcd-arduino-display/ | feels good to have a warm soldering iron and functional hardware']
>>>

I will keep plugging away until I get this thing hammered out. If not, I can print this suff to my LCD for a real-time Twitter display. Could be cool either way.

HTML to Python to Arduino to LCD

Last week found me standing tall upon my shell script soapbox, shouting command line praises to all who would listen.

Thou ought direct thine output aftways, to-wards thine USB port of thee. And that is well and righteous.

Well, that still is the case. My latest project has made it glaringly obvious that sometimes a little Python script will render a whole bunch of shell scripting moot. Namely, parsing HTML. Let’s see a picture…

outdoor hacking

bad lab mobile

Lunch hour project: parse the comments from swantron.com; feed said comments to an LCD screen.

I was horsing around with wget from a CLI a few days ago. I found myself trying to smash through the resultant file via pure regular expressions…which is incredibly clumsy. Well, as luck would have it, my go-to after my main go-to is Python, and this type of thing has been issue enough to warrant a library. BeautifulSoup. It acts to parse the HTML info into items, that can be smashed around as I see(med) fit.

My setup was simple: py script to snag my comments and write serial, Arduino sketch to drive a LCD and read/write serial. And a source of shade. And a WiFi signal to snag.

mobile mobile

bad lab mobile-mobile

Check, check, check, etc. Video time:

Pretty slick…hit the fold for the code, as promised, and a summary.
Continue reading

Command Line LCD Arduino Interface

Liquid crystal displays are pretty awesome. Command line interfaces are very awesome. Hmm…

I started daydreaming at work about how to go about making hardware interface with an RSS feed. I have seen some projects that use Arduinos with ethernet shields to check Twitter, for example, but they seem unnecessarily bulky. Or clumsy. I spend a lot of time working on the command line, and love to put together dirty little scripts to solve problems. It sort of goes along the lines of ‘when you have a hammer, everything looks like a nail’…I figured that the same thing could be implemented with a little shell scripting and my trusty Arduino, sans anything complicated.

So far, so good.

bad lab mobile

bad lab mobile

I put together a sketch (after the bump) to drive my LCD, writing serial output to the screen. After verifying that the sketch worked via the Arduino IDE’s serial monitor, I popped open a CLI and got to work. FWIW, I am using Ubuntu 11.04 still…ctrl-alt-t pops open a terminal window…unity has me all over shortcuts these days. Anyhow, I was able to verify that I could echo text and direct it to the USB port that the Arduino was mounted to. No sweat.

As a proof of concept, I decided to display the number of times that I had the word “awesome” on swantron.com. Once the LCD was shown to work, the sky is the limit…see some regex, pipes, wget, and so forth in action:

CLI

CLI FTW

Survey says:

+1 awesome

+11 awesome

Eleven “awesome”s. Awesome.
(Hit the bump for some code, an oddity, and more fun…)
Continue reading

Verizon Wifi Tether…Droid + Ubuntu

The internets have been abuzz with talk of further stifling of Android tethering. Regardless of what will come of this, I would recommend getting a setup in place. May as well…you paid for the device. Am I right?

My breaking point came with continued poor results from the wireless connection at work. Enough was enough. After trying several mean with which to tether, I think I have found one that is suitable for my needs.

droid 2 verizon tether

scrubbed MAC / IP

My hardware is simple…mid-line Dell Studio Notebook running Ubuntu 11.04…Droid 2, rooted, running Fro-Yo. Verizon with data plan…unlimited, if that is still the case. Connection…check

droid verizon tether

swantron = my connection

I played around with several apps, but have found that Barnacle Wifi Tether from the Android Market does the trick quite nicely. I have dumped several gigs through 3G, and it is decently fast. Haven’t had to reboot, or do anything wonky to this point. I have had two clients connected simultaneously, and it seems to be chugging along. You must configure the security settings, as this puppy lets it rip wide open out of the box.

Grab the app from the Market before Google folds to Verizon. If you need any help rooting your phone, holler at me as well.