Broken Laptop Recovered Using An Arduino

We see Arduino boards used in a lot of projects but we’ve never thought of using one as a USB crossover cable. That’s basically what [Jack the Vendicator] did to get his broken laptop running. When his video card stopped working he found himself unable to access the laptop. Newer machines don’t have a serial connector, which could have been used for a serial terminal, so he was at a bit of a loss since neither SSH nor VNC were installed. But he thought he might be able to use the Arduino as a serial terminal connector over USB. He plugged the Arduino into the laptop, and connected a USB serial converter from his desktop computer to the Arduino’s serial pins. In effect he’s just taking advantage of the FTDI chip, translating those signals back into USB on either end. Once he booted the headless laptop it took just a couple of blindly typed commands to get SSH running in order to regain control.

64 thoughts on “Broken Laptop Recovered Using An Arduino

  1. if he could type enough to bind the USB serial connection to a shell, why could he not just apt-get openssh blindly at that point? this seems like a rube goldberg breakfast machine with an arduino for blog cred.

  2. Jeez, we must have been all kinds of h4ck3r-1337 when we used to connect two machines together with a null-modem cable to transfer files because they were too big for those 360K floppies.

    Sorry, but this isn’t a hack. It isn’t even worth a mention. Simply putting an Ardiuno near it doesn’t make it a hack, either.

  3. You know, I don’t care that he used an arduino. Who CARES!! Why does everyone complain so much about them?…

    The guy didn’t have a SATA-USB adapter or a SATA box to read the drive, and he apparently didn’t want to buy one, so why does everyone complain when he comes up with a creative way to get to his information with what he has on hand? Sure, he could have blindly typed in the rest of the commands, but I’m assuming he didn’t because he also wanted to be able to use this laptop through VNC. So, if you’re gonna just piss and moan about a guy coming up with a creative way to do something, then just don’t come to HaD.

    In my book a hack is taking something and changing/using it to do something it wasn’t intended to do. Well, he took the arduino he had already and used it in a way most people would probably never think of. So therefore it is a hack.

  4. I dunno, blindly typing at a command prompt to get ssh running and using an Arduino as a serial cable is kind of hackish if you ask me, almost epically hackish — in the crude sort of way.

    But seriously… if the computer was new enough to have USB… did it not have ethernet? And it’s running some kind of linux right? He didn’t have like a USB/Ethernet adapter laying around? Really? (Couldn’t just unplug the one from your Wii? Just saying.) Or I mean… seriously, how was the laptop useful before if it had no network connection? Was it a clean-room laptop or something?

    >.>

    <.<

  5. Yeah, no. He could have done what APerson said and apt-getted openssh. He had Internet access. He even ran `sudo su` blindly. All he had to do then was one command and then he could have solved the problem.
    I can’t see any real reason to want to do this other than wanting to faff around for a while doing it the hard way.

  6. No Mikey, he blindly typed the commands to open the usb connection to his other computer. From there, over the terminal, he typed the commands to install the server.

    he could have just blindly installed SSH, connected to it (getting IP from routers DHCP client list or doing a port scan), then used scp, ftp, http, or pretty much anything to transfer the data he needed. All the arduino hackery was pretty much pointless.

  7. What a bunch of lame comments. I bet that you kiddies running windows would have to buy a SATA/USB adapter to get the laptop working. Worse, you wouldn’t even be able to boot it on another machine cause the darn thing would BSoD straight ahead (different hardware signature).

    This is a legitimate hack for a real problem. You morons are bitching because you can’t attach a terminal to the usb serial by typing blindly in window$ boxen. Pffff! I would love to see that: – Click click click .. where is the darn Apply button! :P

  8. Lol he cant take out the laptop drive and plug it into their desktop box BUT he has arduino lieing around.

    What I trying to make a haxx for is to make KVM for linux servers which doesn’t have serial ports anymore (not surprisingly).
    Linux supports usb keyboards by default so that’s not an issue, rather the usb monitors. Some mobo bios could do console redirection but not for usb.

    This whole thing is just so fucked…
    Linuxes USB stack gets initialized way too late in the kernel so if you just make a normal ttyUSB device for console then you won’t see a lot of important boot events and if the boot process doesn’t get so far then you will have no fucking clue at all why is your kernel not booting.

    If someone made a good hack for this post it ASAP. Im about to travel in 2 weeks and want to make sure that if my servers become unavailable I have a way to login to them.

  9. @MrX

    No, i’d just open the daily differential mirror backup of the computer from my Windows Home Server on any of my other machines. Or I could install the image (with slipstreamed drivers) onto any other computer with a recovery bootdisk. Or if the machine is still running remote desktop in over Ethernet.

    I use both Linux and windows and don’t like to be stereotyped for using either one.

    And yes, I also have many USB/SATA adapters lying around.

  10. Jack is a friend but I have to agree with you all about this.
    I don’t like people who can’t count to 5 without an arduino.
    and ifocnfig eth0 192.168.1.120 up
    and andother “blind” command or two and there was no need for an arduino. At all.
    And I don’t see any vatnage in this.

    Sorry Jack, you’re a good guy, but this thing is soooo lame :)

  11. @Bill Right.. You have all of that, but a decent terminal where you can blindly type stuff is no where to be found :P

    I doubt you use Linux at all, otherwise you would realize that there are superior solutions for incremental/delta backups that don’t require a complete computer much less a Windows Server! LOL!

    What else do you need a Windows Server? Active directory? You must be kidding me.. IIS? Right. Oh I know! Internet connection sharing!!

    Thank you for this amusing time.

  12. FTA: He was able to bring the computer up without video in order to blindly type commands to bring up the serial terminal. The serial terminal enabled him to type commands to enable SSH and VNC access. Given that the installation command for SSH and VNC did not require visual feedback, there was nothing stopping him from simply installing SSH and VNC in the first place. The point is not if it’s an interesting kluge to use the FTDI chip in the Arduino in this fashion, but if it was a necessary kluge. In this context, I can’t see why it would be necessary. My guess is, this is one of those “it seemed like a good idea at the time” hacks where the missteps like choosing to set up the serial connection are potentially more interesting than the outcome.

  13. @ bill

    Every time I go over to my moms house my father in law has problems with his WSH install.
    relatively trivial hard-drive failures under Linux completely HOSES his server EVERY time. OOPS your OS partition is corrupt and a reinstall failed. Sorry wipe the drives and reinstall. Has had to do it twice now.

    I also have 3 mirrored drives in my Linux server plus an OS drive. I can pull ANY one drive and a live CD and have all my data available.

    WHS is an EPIC fail in my book.

    Unless there was some thing else at work I also agree the arduino has no place in computer recovery. I can SSH into any of my linux boxes right off the batt.

  14. Seems to me the real hack-tastical approach would be exploiting his own machine and installing netcat, but maybe I’m using the wrong meaning of “hack” :)

    Still, this does seem a stupidly hard way to do things. He’s not patching into a headless russian nuclear sub where he needs an epic approach, he’s connecting to a laptop…that has ethernet AND usb, not to mention removable drives. Even if you didn’t want to buy an adapter, you could use a recovery disc(that boots with openSSHd ready) or just move the drive to your computer.

  15. @MrX

    Sigh, I don’t know why I bother.

    “You have all of that, but a decent terminal where you can blindly type stuff is no where to be found :P”

    No more comments to you; you clearly will listen to no one who might upset your linux superiority complex. And yes, Win+R, ‘CMD’ Enter, and I can blindly type commands to my hearts desire. (and it does stuff too!) SO I have all that and a command prompt. Maybe you’re the one that doesn’t know windows too well?

    And my WHS does torrenting, backups, media serving, PPTP endpoint, etc. Yes, linux can do that too, and I used to have Ubuntu running on the same hardware before switching to WHS, mostly for the better integration with my windows clients and the WHS ‘App store’ for mods I didn’t feel like coding myself.

    @tjb

    I can’t say I’ve had the same experience, and i’ve done some idiot things like unplug my esata 4 bay enclosures during massive file transfers; 4 TB removed from the volume. Plug the back in and nothing is corrupt. A HD failed and no data lost, rebuilt pretty quick. WHS is regarded as pretty good, even Apple users love it over time capsule or whatever they call it.

    Maybe hardware related? Is it one of the junky HP or Asus boxes? I don’t like the hardware the turn-key solutions come with, I installed it on my own hardware, an Atom board that used to be my Ubuntu server.

    Also, you can recover the data drives from an OS drive failure without rebuilding the volume, It’s a option during re-install.

  16. when it happened to me on a HP I just pulled the drive and plugged it into the SATA port inside my desktop, I have a usb adapter somewhere but they are slow and there was a lot of crap on there

    bad thing is, over a year later I still haven’t taken the drive back out heh

  17. What in the name of god is wrong with you people?
    Linux users fighting with Windows users.
    Arduino-fans fighting “1337-h4ck0rz”.
    Smartasses telling about how they would do it.

    But is there like ANYONE who actually read his goddamn post in that goddamn forum? NO!

    Citation for the USBtoSATA and the PC-with-SATA people:”I didn’t have *any* usb-to-sata box or computer with a sata controller”
    Now we have got them smartasses to shut up.

    Next: Arduino. He had this thing laying around and he used it for his needs. Period. He could have had a Parallax Propeller board laying around and he could have used it. He could have etched some PCB and solder an SMD-FTDI-Chip and a badass circuit to do exactly the same.
    If you don’t have an Arduino, it’s your problem. If you don’t like it for whatever reason, it’s you problem. Period.

    Linux and Windows users acting like 12-year olds: Go battle yourself on some pointless IRC-Channel/Forum/whatever. You like apache? Good for you. you have some Linux box doing lots of things which needed an eternity to set up?(downloading and compiling stuff which wasn’t available via apt-get, writing .conf-files by yourself etc., but it’s linux and secure/stable/etc.) Good for you. You like the simplicity of WHS where you have everything you need automatically configured on 2 klicks? Good for you. BUT: Who, except of the troll “from the other side” cares about this? NO ONE! Period.

    I know his method was not the simplest and there are many other ways he could have solved this problem. BUT he used his Arduino to make a serial connection. Period.

    I bet a bunch of you guys are way older than me and have lots of experience in different things. But right now, almost everyone of you is acting like some kid.
    Grow the hell up, people.

  18. An interesting solution, it’s nice to have options.

    The extra effort required (and lack of an Arduino, currently) makes me glad I *do* have the appropriate almost-all-in-one drive adapter, purchased during a similar bollixed laptop episode, and habitually configure ssh log-in as one of my first acts when setting up a un*xy box.

  19. I echo the comments regarding using openssh blindly. I’ve done it before, it’s not that difficult. I admire him for not just giving up on it though.

    Also, @MrX, you make all the *nix users look like jackasses, just like you. Kindly shut the hell up. You’re as bad as the macfags.

  20. This is a poor use of technology, as stated before sudo su;apt-get install openssh;

    @Bill, nice answer.

    @MrX – Yes windows is harder to use without a screen, but no windows will not BSOD with a different hardware config if you use vista or 7. With XP you need only wipe the sam files. Regardless, why would you boot another machine off the hard drive? Why not just pull data off like you need to?

    @Nomad
    I get it that you’re frustrated by this bashing, but in reality this guy took a simple software fix and made it a much more risky/complex hardware-dependent fix.

    @Linux fanboys
    No I am not a M$ fanboy so don’t flame, I just happen to work on them for customers from time to time. My server and desktop are ‘nix and my laptop has separate hard drives for ‘nix/win.

  21. I dont understand, Arduino aside. Here is what I dont understand.

    1. As someone else pointed out, new enought there is USB and no serial, thus, doesnt it have an Ethernet connection?

    2. If its running linux, doesnt eth0 come up at boot?

    3. If he downloaded SSH, then he is SSH’ing over ethernet? (make so sense to tunnel over serial if you are already in)

    4. You cant just connect to a serial port and type commands. The os needs to accept that. (or bios, depends) I know I dont want someone going to one of my linux servers and serialing in.

    What I dont get is why? why was not ssh already there? why was there not an ethernet connection? why setup a serial console port and not ssh over ethernet?

    Again, just a little confused

  22. What is even a bigger FAIL here is there is no way his Video Card failed. Failed Video Card = NO POST = NO BOOT to type anything. His Inverter or Backlight in his LCD failed, Worse case is Video Cable Broke. Which as one person already mentioned just plug in an external monitor into the VGA port, hit the Fn key and which ever F row key (usually F8) and VOILA! He can leet haxxor program up arduino but can’t plug in a monitor and hit a key.

  23. Not trying to be smart here, but wouldnt it be easier to just remove the hard drive, scrape the data off it, install linux, install vnc or something so it can be run via command line. Then replace the hard drive back into the laptop?

  24. I’m still confused as to why he didn’t simply issue the apt-get install command blindly (like he did getty) and then just brute-force the ip. The IP probably would have been between 192.168.1.100 and 192.168.1.110 so it would have only taken about a minute to do that.

    Hardware wise it appears that he simply used the arduino as a usb->serial adapter (of which he already had 1 and needed a 2nd).

    I know I’ve personally done some things the hard way, but this almost seems like he was TRYING to do it the hard way…

  25. Nomad got it right.

    It doesn’t matter that he did it in a way that one might consider wrong.
    He did something, got results and shared it.

    Hacking is sometimes done for s#1ts and giggles people.

    Nut the F up.

  26. or maybe create a liveCD with custom start-up scripts… (say TinyCore Linux) and then blindly get it to boot (if not already set prior to HDD) to get SSH, VNC – or whatever – connecting automatically to the pc, acording to the scripts written before.

    headless laptops can be recovered in many ways. but i like his aproach too. great work.

  27. @strider_mt2k:
    nice that you recognize nomad’s directness and appreciate it.

    @nomad:
    I too appreciate the directness. There was a need which was met using the available resources in a way they perhaps were not designed for.

    @everyone_else:
    some of us who dual boot ‘nix and windows haven’t gotten around to installing ssh and the other toys, and it is your arrogance that keeps us from even asking how! You sound so old-school (if you have to ask, you don’t deserve to get the answer) that you keep linux from becoming more popular. As it is, Windows itself is probably the best promotion for Linux, but then you scare people off by insisting that they do things you won’t teach them to do.

  28. I (unlike what seems to be the majority of posters on this one) read the entire two or three paragraphs the “Jack” wrote on it. While yes, there are a multitude of ways he could have approached it (ethernet cross-over, usb cross-over, pull the drive, etc) he chose to rip the video card out, hook a usb wire to the serial pins of his arduino, hook a serial cable to his arduino as well, and make it work.

    Since I play with old-school 7400 series more than these new-fangled chips, what I would like to have seen in it is simple: did you need to add any code to make it work or did you just need the ftdi chip inside the arduino in order to make it work? If you needed to code something, then will you publish the code?

    So yeah, it’s a great idea considering what was availible to him, a definate paradigm shift from what everyone else would have done.

    That said:

    @Bald_Eagle
    The old-school of hackers has the generation of “you want to know then figure it out” in addition to “I can show you the basics, but you should learn on your own as well.” Each hacker/cracker/programmer/phreaker/etc has a unique style of doing whatever s/he does, hence WHY they say figure it out–the way I learn is not the way you learn. Then you have the fact that most of them had every-day jobs as well and didn’t have the time needed to teach a newbie how to do something.

Leave a Reply to Michael BradleyCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.