Hacker News new | comments | show | ask | jobs | submit login
The Ultimate Mobile Computer: Connecting an Asus Transformer and a Raspberry Pi (samuelstern.wordpress.com)
46 points by habosa 1800 days ago | hide | past | web | 38 comments | favorite

I have a Nexus 7 with a bluetooth keyboard, I rooted it and installed Debian. I can SSH into it and pretty much do anything I want (I use ConnectBot or Terminal IDE). I have installed Vim, PHP5 Cli, MySQL and also PHPUnit. For testing sites locally in a browser, I have installed KSWeb. I also use an RDP client to access the LXDE desktop on Debian. Is there really a need to SSH into an RPi when one can have a setup like this?

What kind of keyboard are you using? I also have a Nexus 7, but it's hard to find any decent keyboard. Does it hold the tablet, or do you have to support it yourself?

My question here is OOT, can Nexus 7 be used with bluetooth keyboard with its original OS?

Yes. Android support bluetooth keyboards.

From the title I was expecting the RPi to be permanently inserted inside the Transformer somehow. Being at the mercy of the vagaries of 3G reception / public wifi provision is the sort of thing that puts me off doing this kind of thing myself.

Why an RPi as the backend though? Why not something that will compile your code faster? I recognise that not everyone is comfortable with renting a virtual server, but if you're going to leave your MacBook at home, can't you ssh into that?

The backend question is a big one and I agree that an RPi seems to be a poor choice. Samuel Stern has a MacBook Pro, which has much more power, single-thread and multi-threaded. Nevertheless it probably consumes much more energy than the RPi.

Other people rent some server, e.g. Matt Might uses Linode [0], but something like $20 per month flat is really expensive, if you would use it rarely and not for business. Maybe Amazon EC2? Though I doubt it fits the use case of weekend use plus one or two hours per week day.

[0] http://matt.might.usesthis.com/

I wanted my "backend" to be always-on, power efficient, and powerful when headless. The MacBook wasn't a good option because I often close it or leave it uncharged, and OS X doesn't have as many command line tools available as Debian or other Linux distros. It's also a huge waste of power to use the MBP as a server, whereas the RPi sips power from a cellphone charger.

I could have also used an EC2 Micro instance or a Linode, but those are both much more expensive than an RPi for something I don't even use every day.

good point here. I'd either ssh into the macbook or attach the Pi to the back of the Transformer screen and also power it from the transformer.

I don't get what the Raspberry Pi is for. The Transformer is a lot faster and already runs Linux, you could just install Ubuntu/Debian in a chroot and use that instead of sshing to the Raspberry Pi.

I have not found it easy to install Ubuntu or Debian on the JellyBean Transformer. Since I had already ordered an RPi, this seemed altogether easier. The RPi also has the advantage of being able to serve as a single-user server when I want to quickly test a rails project or a backend for one of my apps.

This exactly. He has a very good Transformer setup that I'm going to duplicate. The only reason I could see for the PI is if he used it to provide USB Host mode or something similar - connecting the two long-term to extend their features.

OR if he were programming the PI from the Transformer...

More of these articles please! I really like hearing from other mobile people.

Macbook pro is a no-go; the battery life is dropping fast. And it's not old. My Macbook 13 inch is better but also going down. Even with a new battery it's just too short lived... I have a Hypermac battery and that's definitely the best buy for mobile mac use. It is really great, but they cost way too much (imho). I really the way these machines 'feel', but battery life is more important for me.

When I am in a cramped space or need a lot of time and need all my development stuff (even Java), I use my Pandora which works like charm. For a bit less power and same form factor I also still use my Zaurus C860 which works fine and runs things like Haskell fine. It's just not that easy to do some Crash when bored/relaxing.

Pandora has over 10 hours battery life for me and I can swap batteries in no time (so 20 hours). Disadvantage; it's extremely small and low res. I would recommend and buy one any time.

Transformer prime (TF700) and Pandora are really great; both very portable systems and just work on the Pandora (full linux install with SSH/VNC/X).

I think, if it could install Linux, the Nexus 10 with a keyboard would be great solution. The resolution is insane and only for that I will get it. With a bit of hacking it seems like a fantastic 'monitor extension with a brain'.

You know, you can do pretty much the same thing with an iPad and the Logitech Ultrathin Keyboard. I do that with a Prgmr instance and it's pretty awesome, but by no means perfect. I'm starting to think the ARM Chromebook might be closer to perfection as I can SSH from chrome anyway and you can get cheap 3G on there.

I would love a 3g/4g enabled ARM based Macbook Air with 12 hour battery life. Of course, iPad 4 with 4G LTE would be pretty close for pretty cheap....

This is my mobile setup. Let me know if you have any questions about the specifics or ways I could improve this. I just finished it today and thought I'd share.

I'm probably missing something crucial here, but I was just wondering why you actually need the Raspberry Pi?

I'm don't own any Android devices so I'm not an expert, but wasn't the idea that you could easily install and run a Linux userland with all your tools, directly on the Transformer Prime?

Writing, compiling, and executing Java and Haskell code can't be done (easily, at least) on the Transformer Prime, so he's just exploiting the batter life (along with it's inexpensiveness, and effortless syncing) of the Transformer and using it as a mobile access point to his pi where he can code.

The question is really: Why an RPi, specifically, instead of, e.g., your macbook or any other desktop-class hardware you have at home? When thinking of a development machine, the first thing that comes to mind is pretty much NOT an RPi. In fact, for my own RPi development, it is more efficient to develop under Linux (possibly run in a VM), and cross-compile to ARM than it is to compile on the RPi directly.

The reason for the Raspberry Pi is that it meets the following criteria:

1) Always available (MacBook may not be open and charged) 2) Energy efficient 3) No variable cost (as opposed to EC2 or Linode) 4) Very powerful when headless (Linux is better than OS X here)

It's not the most powerful backend but that wasn't really the point of this project. The point was that for $35 I added a dedicated Linux backend to my already awesome Transformer tablet.

Thank you for sharing. I plan to buy a Transformer (with a cellphone card for data access) for Christmas. I'll use the VPS instead of the Pi, but it's nice to know that it's a viable option. Every suggestion for the software is greatly appreciated.

different people already mentioned it: Why do you need a pi!? you can changeroot or ssh into any arm linux distro from android, it even flatout replace it. Did I miss something important?

This is not easy on the Jelly Bean Transformer Pad, and I have heard it greatly compromises battery life.

Not true. https://play.google.com/store/apps/details?id=ru.meefik.linu...

In chroot'ed mode, I do not find that my battery life is any less outstanding than without the chroot.

It's not easy to support dual boot, and I would not be surprised to find out that booting into Linux directly would compromise your battery life. But I would be equally unsurprised to find out that it does not. It matters mostly that you need to have a properly configured kernel.

Not sure if it's possible to share one kernel between android and non-android. But I'm fairly certain that the bits that make booting into regular linux impossible are not the ones that control longevity and battery life. (A little bit fairly certain, anyway.)

I recently installed Ubuntu on my first generation chromebook. (http://chromeos-cr48.blogspot.co.uk/2012/04/chrubuntu-1204-n...) This is a perfect setup for me. I have a linode as well, but found that 3G and wireless wasn't good enough for out and about (I live in Yorkshire UK).

I cannot say enough good things about the chromebook w/ Ubuntu. It is an endless pleasure to use. The one caveat to this is that I only use a handful of terminals and the browser. I suspect that using any of the other GUI features of Unity is probably miserable (as they are on my i7 machine too)

This was supposed to be my dream setup too. I got a Raspberry Pi which is gathering dust on the shelf now. I was so eager to use it when it came out, then I had a faulty microSD card and lost all spirit to turn it into a credit card-sized media center. I hope if I can find some spare time, and a working SD card, I'll achieve this goal.

I also needed an Android tablet a couple months ago, because I didn't want to miss the tablet side of the Android. (There are not many tablet exclusive apps, but I'm way too obsessive to miss them.) But unfortunately I couldn't spare too much money and ended up with a 8 GB Nexus 7.

I wanted it to replace all my laptop needs -I haven't had a laptop for many years, after my last one died and got a desktop which I still love- but without a hardware keyboard and a big enough display, it's only great for reading anywhere. (Which I also don't, I'm too busy most of the time, and at the other times plain lazy.)

I hope Android ecosystem will mature even more in the near future. Look, Ubuntu is installable on the Nexus 7 right now. (I haven't done this yet, you can see the pattern here.) That basically means almost everything you can do on Linux, you can do it on your tablet too. And if you can support it with something with more horse-power than Raspberry Pi, you can call it a thin client/fat server pair.

The only thing left is to have a good tablet that can run Linux, has a big enough display, and has keyboard accesories. I personally don't like Microsoft, but the new line of Surface tablets look promising. As long as it lets me run whatever OS I want to, I'm all for it. Asus Transformer is not a bad option, but having the keyboard double as the cover and keeping it light sounds so much awesome.

This is kind of a newbie question... but how does one develop java code through SSH?

I thought SSH was run through terminal command line. ie. all text. I can understand coding in vim with python or ruby through the command line. I'm not sure how its done with languages that need an IDE? like java

No languages strictly need an IDE. I don't really work with Java so I can't comment with how well you'd get it integrated in VIM. There are a few tips here that could help [0].

[0] http://stackoverflow.com/questions/253170/tips-for-using-vim...

That's a great point. I definitely won't be doing any large Java Projects over SSH however I do occasionally like to code a quick algorithm proof-of-concept in Java (it's my language of choice).

A detail, but the RPi does not have a 1Ghz ARM processor. Only running at 700Mhz by default. Of course, you can overclock it, but it's not the same.

Actually the latest official firmware automatically overclocks it to 1Ghz if needed.

I've been thinking about getting this kind of setup too, without the Pi(Also, I'm in Brazil, it's probably hard to get one around here)

What I was thinking of was getting an Asus Transformer and running Ubuntu on it, I've read that's possible(maybe without touchscreen, but I just need a long battery, keyboard, command-line, vim, browser)

could somebody tell me what's wrong with this?(I see browser could be an issue if touchscreen doesn't work there, but I already use Vimium and I guess I could circumvent this, I'm more worried about general malfunction or higher battery consumption)

I'd also like to know if it's possible to get this(vim, terminal, ruby, etc) directly in a Android JellyBean(since Android runs a fork of linux...)

Android is not a fork of Linux. It uses the Linux kernel. End of story.

Programming on Android is not easy. As you want ruby you can have a look at SL4A [1].

There are several terminal emulators and IDEs like Terminal IDE[2] that was mentioned in the article. From the descriptions it seems to have Vim or at least bindings for it.

There're also a few IDEs like DeuterIDE[3].

There's even a git client.[4]

[1]: https://code.google.com/p/android-scripting/

[2]: https://play.google.com/store/apps/details?id=com.spartacusr...

[3]: https://play.google.com/store/apps/details?id=com.didactic.D...

[4]: https://play.google.com/store/apps/details?id=com.madgag.agi...

There's a vim app on Play Store, which I tried and loved it. I used it on my Nexus 7 tablet with software keyboard and attaching my USB keyboard via USB-OTG adapter, and it was a great experience. If I had a Transformer, I'd do all my coding on it without any hassles.

Thought I would chime in, because I've had a fair amount of experience with this and it's basically a battleground... if you try just once to install a reasonable Linux on your android transformer, you might get the wrong idea and believe that Android Linux is just not usable.

My favorite configuration on my TF-101 is TeamEOS nightly builds with a separate partition for Ubuntu Precise which I run without X11. The partitioning can be accomplished using OLiFE Prime (don't mind that you may not have the TF Prime, that's not what prime means here.)

There are various APKs that will let you install Linux from several (mostly debian-based) distros into a chroot, by mounting a loopback file. I had good luck with "Debian Kit" and my current install of Ubuntu is older than my current install of Android, so I can't tell you exactly how I got it installed, but if you're not familiar with the chroot method of installing Linux, there are several different market apps with the goal of making it easy for you.

I found it's best to forego any X11 stuff. You wanted Linux so you could run a terminal, apt-get, and compile software? You got it. Android Terminal Emulator supports the control key, shift, and "back" for escape, it's perfectly usable.

That all works OK, but you have to take some care to get the armhf (not armel) versions installed, they work great and are much faster. You can also ignore that. I have read that they are much faster but I don't have empirical evidence to support that. "Feels true"

Finally for end of the 2 minute elevator pitch for Android Linux, as soon as you try using something that requires SYSV IPC, you will probably find it doesn't work (that means Apache, MySQL, basically any kind of multi-process server), unless your kernel mastery far outstrips my own, or if you settled on AOKP instead of EOS build of Android. The AOKP builds I tried _do_ support SYSV IPC. But nobody else does.

I did manage to enable X11 once by OLiFE installer, the system I installed was a "natty" at least two generations old, it worked fine out of the box from OLiFE, but it was kludgy at best, I tried upgrading everything to oneiric and precise, and from then on nothing worked. I did not want to lose my Android notifications backbone, so I went back.

I do everything in a chroot now.

Don't get me wrong. It worked. I just don't see the point of having a touch screen on a system that was engineered for a mouse and keyboard first. So, tl;dr, you can most certainly get a full working Linux terminal on Android JellyBean, I have... it's possible to install rvm in the usual way, and if you are a vim user, you'll be wanting that escape key, don't forget to set the options correctly in the Android Terminal Emulator app.

tl;dr #2

Yes you can, install Linux on your Android

I started with Linux Installer STANDARD (Galoula) It worked, but only for a short time (random freezes)

Debian Kit (Sven-Ola) worked great

I outgrew it, eventually picked Linux Deploy (Anton Sk.)

All of these are a great choice, none of them will get you ARMHF binaries by magic, unless I missed some feature changes. ARMEL is fine though.

from what you said I got the impression this sort of setup is way unfit for development... wouldn't MySql, Apache means plenty of other development environment tools would be out too(postgreSQL, other web servers come to mind, browser...)?

you then mentioned some are a great choice... could you explain to me how you rate this developing experience?

I can see how being able to dish out some code anywhere would be useful, but I hoped to be able to do serious development/have it as my main work tool, even if the environment was a bit limited/lacking...as the advantages could surpass the issues (my Dell XPS Notebook already lasts only 1hr without being plugged! 1 year old only... )

I am going to defend the platform, while you should understand that if you absolutely need a local webserver or database to make your development go, what I have to say does not apply to you at all. EDIT Same goes for X11. I am an E17 user, but not on Android. I don't care about X11.

There are plenty of software out there that do not depend on Apache or MySQL. Postgres too. (I tested postgres, it also does not work.) There is nothing stopping you from using a sqlite database and they are very advanced nowadays, although if your goal is to use Go (ARM port) with SQLite, you will probably find as I did that it's not tested and not working. But the system sqlite library and client in Debian/Ubuntu is not at fault. Many Android apps (android java) depend on sqlite databases and they are IMHO the new ubiquitous data store here.

You need to re-evaluate your expectations for this platform. The shell should be a means to an end. I am thinking always, do I have a way to accomplish this task that does not involve running a shell yet? The end of all development on Android should probably be an APK, with buttons and ready to take your orders by touch, no heavy requirement of memorized shell commands. The platform is not meant to run a shell, and the shell should not be a part of your end-user product. That said, nothing stopping you... Android Terminal Emulator is a quality, finished product. I use the shell every day to ssh somewhere else and access screen or tmux. After a while I find that there are not many "standard linux" processes that I want to use on Android, past the phase of testing for "does it work at all?" level of compliance.

When you think about using apache/database, think about uptime requirements for those packages. On half of the environments I tested, the system could not stay up reliably past an average of 20 process forks in the chroot. I had to kill my entire chroot and start again. You can imagine this made apt-get completely unusable. Still, try enough times, you get the software that you needed installed. These processes don't throw away their work just because they are stopped or killed. This was the problem I experienced on Galoula's installer, and it did not occur with Debian Kit or Linux Deploy. YMMV.

These (androids) are systems that are meant to be running on wireless networks, without public IPs, and powered by batteries. If your process is going to cry when your battery runs out and the socket it's listening on closes, or if a cron job fails to fire on time, it should be deployed on a real server. Take Android out of the picture. You can get a "plain linux" system by using OLiFE installer, with no Android. Now the hardware will do what you want. It's just not Android.

But if you want to preserve the Android userland experience, and just gain access to compilers, Linux Deploy or Debian Kit are perfectly suited to what you want to do. There is nothing stopping you from connecting to a MySQL server that's hosted remotely, or pushing to a git repository. You can apt-get install libmysqlclient-dev all day. All of that stuff works. SYSV IPC is responsible for a very small subset of what we Linux guys take home / really need for development.

I would recommend against AOKP on the transformer (and cyanogen, and basically everything but stock or EOS roms) because they all seem to reboot themselves for no reason with an unacceptable frequency, and they all have "the sound bug" where you may have to reboot it yourself just to get an app to play a sound after some length of uptime / some event I don't quite understand happens. EOS has been completely free of these bugs in my experience. I only reboot when I'm feeling frisky.

BUT AOKP does not have the SYSV IPC bug. So if you are just playing, and you want to have debs that require IPC, that is your platform. Still require batteries, still other criticisms apply.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact