The Android Transporter allows you to share the display contents of your Nexus 7 tablet wirelessly with other screens in real time.
Now, the first tech demo of the Android Transporter is out!
Introduction
The Android Transporter allows you to share display content wirelessly with remote screens in real time. Please be aware that the Transporter is still a technology study and it is missing the maturity of a full-featured product. However, we think that the Android Transporter is already exciting enough to let you play around with it. We believe that with the recently released Miracast standard you will get a very similar technology in upcoming Android devices, and we are considering making the Transporter compliant with the Miracast specs.
The Android Transporter is a custom ROM and not an app since we had to make adjustemts to various parts of the Android platform to make it happen.
Be aware that you use the Android Transporter at your own risk and that you will void your tablet’s warranty by following the setup instructions below. Moreover, you are not allowed to bundle further Google apps like the Google Play Store with our firmware image.
Read on for the quick start guide and some Android Transporter internals.
Quick start guide
Let’s start with the Asus Nexus 7.
By installing the Android Transporter firmware on your Asus Nexus 7 all data on the device will be removed including the contents of the /sdcard directory! So maybe you want to backup some data before you begin.
To start, enable USB debugging on your Nexus 7 by switching on this option under Settings -> Developer options.
Next, unlock the bootloader of your Nexus 7 device. This will void your device warranty and it will also do a factory reset!
Install the adb and fastboot utilities. On Microsoft Windows you will also need Google’s USB drivers. Just search the Internet for instructions how to install this tools.
Unlocking the bootloader is done by getting the device into the bootloader using the adb reboot bootloader command. Now unlock it with the fastboot oem unlock command.
Download the Android Transporter firmware for the Asus Nexus 7 and unpack it. Reboot your Nexus 7 device into the bootloader using adb reboot bootloader. In the Android-Transporter directory you will find the flash script, which is called flash-all.sh. Be aware that the fastboot utility has to be available in the PATH environment for the flash script. Execute the flash script. Your Asus Nexus 7 is now ready.
To switch back to the original Nexus 7 firmware image you should first download it from Google’s factory images site. Then you can flash the original firmware image using the same instructions that you used to flash the Android Transporter firmware image.
Let’s move on to the Raspberry Pi.
Download the Android Transporter firmware for the Raspberry Pi and unpack it. Insert an SD card into your card reader and flash the firmware image using the dd utility: sudo dd bs=1M if=esrlabs-rpi-android-transporter-2012-10-02.img of=/dev/sdX. Substitute /dev/sdX with the real SD card device name. For more information on flashing the Raspberry Pi see the Embedded Linux Wiki page for the Raspberry Pi. The Raspberry Pi is now also ready.
Next, you have to set up the networking between the two devices. You can either connect both devices to your home router or you can make use of the Raspberry Pi Wi-Fi hotspot. Both scenarios require the Raspberry Pi to be plugged into your home router. The Wi-Fi hotspot works with USB Wi-Fi adapters that are supported by the Realtek rtl8192cu Linux driver. We tested the Wi-Fi hotspot with the Netgear N150 Microadapter and with the Asus N13 Wi-Fi Stick. It works well with both Wi-Fi sticks except that we occasionally had some power consumption issues with the Asus device.
If you want to make use of the Wi-Fi hotspot plug in the stick before the Raspberry Pi starts up. The network name of the Wi-Fi hotspot is RaspberryPiAP and the default password is E.S.R.Labs.
The Wi-Fi hotspot may have the advantage that the Android Transporter has its own dedicated network to minimize the latency jitter during screen mirroring. If you connect both devices to your home router please make sure that the Wi-Fi transmitting power of your router is set to high. Otherwise you may experience high packet loss, which is bad for the Android Transporter.
When you now connect your Nexus 7 to the Wi-Fi network and start the Android Transporter you should see the Raspberry Pi in the list of available media hubs. The Raspberry Pi has announced itself as media sink via service discovery. Just tap on the Raspberry Pi item to start the screen mirroring. If you want to stop the screen mirroring just pull down the notification bar and click the Android Transporter “Switch off” item.
By default the Android Transporter will make use of the H.264 over RTP over UDP streaming protocols according to RFC3984. If you are in a building with a lot of Wi-Fi networks, it may be possible that the Android Transporter does not work really well because of high packet loss. If that is the case you should switch to the H.264 over RTP over TCP streaming protocols according to RFC3984 and RFC4571. You can do this in the preferences of the Android Transporter app. The latency will typically be around 20-30ms higher when using the reliable TCP transport protocol.
Enjoy the Android Transporter tech demo
.
Android Transporter
We did some measurement series to show the total end-to-end screen mirroring latency. The measurements were done using two photo diodes (one on each display) and a test app that really stresses the H.264 encoder and decoder. Furthermore, we are able to measure the time periods taken by each individual step of the screen mirroring process directly on the devices.
The picture below shows the box plot for a typical Android Transporter setup where a Nexus 7 is connected to the Wi-Fi hotspot of a Raspberry Pi. The screen is mirrored with a frame rate of 30 FPS, a bit rate of 8 MBit/s and an I-frame interval of 1 using the UDP transport protocol.

You see that the total latency is typically around 207ms. But there are also a few outliers of up to 257ms. The outliers are mainly introduced by the Wi-Fi network.
The work that has to be done by the Asus Nexus 7 for one video frame takes around 41ms on average. It is made up of grabbing the screen, H.264 encoding it and sending it over the Wi-Fi network. The rest of the time is mainly due to decoding and displaying it on the Raspberry Pi.
To further reduce the latency one needs to work with the hardware vendors in order to minimize the time that is spent in the H.264 hardware encoders and decoders and in the vendor specific OpenMAX implementations.
Unfortunately, a latency of around 200ms is too high to play fast 3D games. But it is okay for apps, videos, slide shows, photo presentations, some games, etc.
The next picture shows the box plot for a Samsung Nexus S, which is mirroring its screen contents onto a Raspberry Pi. The setup is the same as for the Nexus 7 except that the I-frame interval is set to 0, which means the Nexus S is doing only I-frames and no P-frames. Unfortunately this option does not work on the Nexus 7.

As you see, the average end-to-end screen mirroring latency is 175ms with outliers of up to 200ms. One interesting thing is that the Nexus S needs 74ms to grab, H.264 encode and send a video frame to the Raspberry Pi, which is worse than the 41ms needed by Nexus 7. But the Raspberry Pi is a lot faster at decoding the I-frame only video stream, which additionally has a much lower resolution.
The Android Transporter player on the Raspberry Pi currently does not do buffering of video frames. It simply plays them back as they arrive. This is quite good for the real-time screen mirroring but not necessarily for all kinds of applications. This strategy is also the reason why video playback on the Raspberry Pi is stuttering a bit from time to time. We will add a buffering strategy in the future. In the meantime, maybe you want to fix that since the source code of the player is freely available on GitHub
.
Since the Android Transporter does currently not support the MPEG-2 TS streaming protocol it is not compliant with the Miracast spec. We also plan to change that in the future.
Raspberry Pi
The Android Transporter player supports H.264 video as well as 44.1 kHz PCM and AAC audio streams.
The source code of the Android Transporter player for the Raspberry Pi is available at GitHub under the Apache 2 license. You may try out the player as explained on its GitHub site. E.g. you can stream videos and music to the Android Transporter player on the Raspberry Pi using the VLC streaming server.
To substantially improve the real-time capabilities of the Raspberry Pi we recommend applying our Raspberry Pi Linux Kernel patch. The patch is already included in the standard Linux Kernel v3.2.27 for the Raspberry Pi, which is also used by our firmware image.
To configure the Wi-Fi hotspot on the Raspberry Pi please edit the /etc/hostapd/hostapd.conf file. This is the right place to change the network name (SSID) and the Wi-Fi password.
If you want to change the Raspberry Pi’s overscan settings according to the needs of your television set, video projector or monitor just log in to the Raspberry Pi via SSH and adjust the /boot/config.txt file. The user name for the Raspberry Pi is pi and the password is raspberry. For more information on configuring the overscan mode please see the Embedded Linux Wiki page for Raspberry Pi video modes.
Some other configuration options of the Raspberry Pi can be adjusted using the raspi-config tool.
Instead of using the Raspberry Pi as viewer for the Android Transporter you can also use the VLC or GStreamer player. The only limitation is that both players only support the UDP transport protocol. Furthermore, the VLC player introduces a much higher latency than the player on the Raspberry Pi or the GStreamer player. To use the VLC or GStreamer player you have to first start the Android Transporter app on your Asus Nexus 7. Next, use the vlc rtsp://<Asus-Nexus-7-IP-Address>:9000/android.sdp command to start the VLC player.
Alternatively, use the following command for the GStreamer player: gst-launch -v playbin2 uri=rtsp://<Asus-Nexus-7-IP-Address>:9000/android.sdp uridecodebin0::source::rtpbin0::latency=10
Asus Nexus 7
The Android Transporter app allows you to change various video-encoding settings. It also enables you to announce a Nexus 7 tablet as media sink to mirror the screen contents of one Nexus 7 device to another one. Besides using the service discovery, this can also be done using the Android Beam feature. Just start the Android Transporter on either one of your Nexus 7 devices and bump the two devices via NFC. Then touch to beam the screen contents.
The total end-to-end screen mirroring latency from one Nexus 7 device to the other is around 150ms with the H.264 video decoding process consuming the biggest period of time.
You will notice that the Android Transporter firmware supports the landscape mode for the Android Launcher.
By default, the landscape mode is also enforced while beaming the tablet’s screen contents to the Raspberry Pi.
What’s next?
We are currently working on the audio streaming support for the Nexus 7 and on the Wi-Fi Direct support for the Raspberry Pi.
Update 1 – Samsung Nexus S (GSM)
We just released the Android Transporter firmware for the Samsung Nexus S (GSM) to give you an outlook on game-playing. To flash the Android Transporter firmware please follow the instructions that you find in the quick start guide above. One problem with gaming on the Asus Nexus 7 is that the bit rate settings do not work and therefore it produces bit rates of up to 20-30 MBit/s during fast 3D games. This is way too much for a lot of WiFi routers. The high bit rate results in heavy packet loss which makes gaming on the Asus Nexus 7 nearly impossible.
But thankfully, the Samsung Nexus S is pretty good at fast 3D car racing games as we already showed in our previous demo.
Update 2 – Samsung Galaxy Nexus (GSM)
Due to demand, we also released the Android Transporter firmware for the Samsung Galaxy Nexus (GSM). Keep in mind that the H.264 encoder of the Samsung Galaxy Nexus is only capable of about 20 FPS. The total screen mirroring end-to-end latency to the Raspberry Pi is typically around 270ms.
Update 3 – Android 4.2 and Miracast
According to the official Google Blog Android 4.2 will have support for wireless display so you can wirelessly watch movies, YouTube videos and play games right on your Miracast-compatible HDTV. ![]()

184 Comments
Me rambling my thoughts, feel free to comment to correct any clue-lessness—I’m a physicist and very definitely not a computer geek—I only mess with OSs very reluctantly. I’d never heard of a Raspberry Pi before, but E.S.R.Labs’ whole idea is awesome, and I think I can definitely somehow use it to get my Nexus to display on an external monitor although perhaps not the way I envisaged when I began reading this page or even writing this comment.
1: So I assume I need to use a wifi link between the google nexus 7 and raspberry pi [because of how the tablet has been setup with no video out; actually I found your info in the first place because I was planning on hacking the hardware side of things to be able to plug my tablet's video data directly into a larger monitor but your method is way more elegant and less invasive!!] but presumably there is no reason why I can’t just plug the raspberry pi’s video out into a monitor with a cable–or am I totally missing something here (what I want on the external monitor is the screenshot of the Google Nexus 7 and I want this to work with me running any software; i.e. I’m assuming that your software makes the video out of the RPi the same as the (otherwise inaccessible) video out of the nexus or have I got this completely wrong, and in effectively being a little radio repeater is the video out of the RPi not actually set equal to the video out of the Nexus?).
2: How easy would it be to get this to work with Ubuntu desktop 12.something as the tablet’s operating system; I want to be able to use my tablet as a tablet but I also want to use it as a desktop computer and the only current problem is the 7″ screen being too small to be able to efficiently use many of the programs I would like to run which is of course only a problem due to the lack of a video out connector!—of course I could just use the RPi with its Linux operating system directly (without the nexus at all) but my current understanding [which you can correct me on] is that the nexus has a much more powerful multi-core CPU for running number crunching on (I’m not expecting high performance but I will be making the nexus work). Actually now I think of it, I could just install Ubuntu desktop on the nexus and use the RPi as a terminal into the nexus which then displays out to an external monitor and I don’t actually need to use the nexus’ video or your code at all. This never occurred to me before as the whole point is that I can’t afford a real computer as a computer let alone as a terminal but the RPi really does redefine affordable.
Thanks, awesome project, it seems the real development these days happens outside the commercial sphere, and thanks massively to you and everyone else who writes ‘how tos’ in plain English that non-geeks like me can actually follow.
My nexus has had its software crippling removed and hopefully its hardware crippling can now be bypassed.
1. Yes, you need a WiFi connection between the Nexus 7 and the Raspberry Pi. And yes you can plug a monitor into the Raspberry Pi’s HDMI connector. What the Android Transporter does is to mirror the Nexus 7 screen to the monitor.
2. Since our software is written for Android it does not work on Ubuntu Linux. I don’t know if there is a port of Ubuntu Linux to the Nexus 7 at all.
Thanks.
I haven’t run Ubuntu on my nexus but other people have. People have run the standard desktop version (using external mouse and keyboard) and hence can run all the standard linux software–only issue screen size. How most people seem to have done this is with ROMmanager which allows multiple bootable ROMS, keeping a version of android on the tablet but then allowing boot of ubuntu desktop from an attached USB [obviously all of that requires root permissions]. There is also a touchscreen version of ubuntu which has very recently been released but as this has only been publicly released to developers this year, very little software has been compiled to run with it so far.
I flash Android Transporter on Nexus and found that the camera does not work. Why?
I have to admit that I never tested the front-side camera on the Nexus 7. I only tested the cameras on the Galaxy Nexus and on the Nexus S and they work. Maybe our firmware image lacks the camera driver. I will have a look on that for a future release.
Thanks for your reply. I have resolved camera issue.
1. Extract “camera.tegra3.so” from factory images “nakasi” for Nexus 7(Wi-Fi) 4.1.2
2. Add “camera.tegra3.so” into “system/lib/hw” on Nexus 7
Thanks for fixing this
.
Have you tried to make a rom for Nexus 4 (the LG one)? I know it has Miracast but Android Transporter seems to be way easier to use.
Could you tell if it’s feasible to make a Miracast player for Raspi that will support DRM? I suspect that drm is needed to i.e watch videos form apps like Netflix. Or maybe there is some way to hack the Android/app to think it talking to fully protected player.
No, sadly we didn’t have the time to port the Android Transporter to Android 4.2 and to the Nexus 4. I think realtime DRM support for the Raspberry Pi is quite tricky if not impossible since that has to be done in hardware for efficiency reasons.
Probably the content form Miracast is encrypted and no one will give the decryption keys to an open source player for Raspi. There seems to be a relatively cheap($60) Netgear P2TV which supports Miracast.
hi, i would like to say that you have made a fantastic product that works perfectly. many thanks. however when ever i try to “sudo apt-get upgrade” the pi fails to load. do you know of the correct way to fix this? is it a known problem with any conflicts of the installed programs?
Hm, interesting. I never tried to update anything up till now. Have to check this next week.
I have a question in regard to the raspberry pi firmware. Is the firmware standalone(includes OS) or is it a package that is installed on top of a pre existing OS on the SD Card?
When I install the firmware to the SD Card with the method stated. My Raspberry Pi doesn’t not boot. Only get “ACT” light for half a second. I do not get any video or any other response from it. My RP is the newer 512MB Model B.
Is there some prerequisite that I may be missing that would cause this?
The Raspberry Pi firmware image is a bootable image including the Linux operating system. Maybe you should try to download and flash the image again. We also have the firmware successfully running on a Model B hardware, so this should not be a problem.
I’ve tried re downloading the firmware and re flashed the SD card to no avail. Its still doing the same thing.
Is there an alternative way to get Android Transporter capablilies on my Raspberry Pi besides this firmware?
Maybe a debian package?
Hm, sounds strange. Have you already tried another SD card?
We only have the firmware image, no Debian package, sorry.
Hi,
Same problem for me, redownload img, reflash with differents tools, same :-:(
Have you tried the original Raspbian Raspberry Pi firmware (http://www.raspberrypi.org/downloads)? Does it work? Have you used the Win32DiskImager tool or dd?
Yes, with original it’s work !!! Used Win32diskimager and flashnul, same thing with transporter img. doesn’t boot.
Ah ok. I never used the Win32DiskImager tool. I always used dd. I will check the Win32DiskImager tool tomorrow.
Tested with dd, same thing.
I now downloaded and flashed the firmware image again and it works fine for me. I tested it with a 4 and 8 GB SanDisk SD card and with a 16 GB Transcend SD card. Here is what it did:
1. After downloading the Raspberry Pi firmware image zip file I extracted the img file.
2. I unmounted all auto-mounted partitions of the SD card: sudo umount /media/<partition-id>
3. I flashed the image to /dev/sde: sudo dd bs=1M if=esrlabs-rpi-android-transporter-2012-10-02.img of=/dev/sde
4. I did a “sync”. I don’t think that this is really needed.
Then it should work.
I have tried to get this working on my Samsung Nexus S, but do not see anything on the phone. I am not sure if I am installing correctly, as when I try to Flash the phone I get:
bash-3.2$ ./flash-all.sh
./flash-all.sh: line 17: fastboot: command not found
./flash-all.sh: line 18: fastboot: command not found
./flash-all.sh: line 20: fastboot: command not found
./flash-all.sh: line 21: fastboot: command not found
./flash-all.sh: line 23: fastboot: command not found
Any help would be most welcome.
Sorry I think I figured out the first question, but now failing during the flash-all.sh:
Device product is ‘herring’.
Update requires ‘tuna’.
It seems that you have downloaded the Android Transporter firmware for the Google Nexus S but you have a Google Galaxy Nexus device. So you just have to download the Android Transporter firmware from here: http://esrlabs.com/downloads/ESRLabs-Samsung-Galaxy-Nexus-GSM-Android-Transporter-2012-10-17.zip
The fastboot command is missing which is part of the Android SDK. You can download the Android SDK here: http://developer.android.com/sdk/index.html
After installing the SDK you have to put the platform tools into the path, e.g. “C:\Program Files (x86)\Android\sdk\platform-tools”.
Then, it should work.
Thanks for this, I did get it all installed and working great. I saw another reference to getting Transporter installed within XBMC, but was wondering if you had any more detailed instructions on how to do that. Really appreciate your efforts here.
Hallo,
ich hab grade gelesen, dass es möglich ist, GStreamer als Player zu verwenden ! Heisst das letztlich, dass es einerseits möglich wäre, den Player kompatibel zum Miracast Standard zu machen (als Empfänger) und andererseits zum Beispiel Enigma2 Satellitenreceiver (z.B. Dreamboxen), die per LAN Kabel an einem Heimnetzwerk mit WLAN hängen, (im Enigma2 gibt es GStreamer) zum Player zu machen ?
Das wäre der WAHNSINN !!
Da wir als Übertragungsprotokolle H.264 over RTP over UDP nach RFC3984 verwenden, ist es möglich mittels GStreamer und VLC den Stream wiederzugeben. Allerdings kann weder GStreamer noch VLC derzeit einen Miracast Stream wiedergeben, jedenfalls meines Wissens nach.
Wir können unseren Android Transporter allerdings noch Miracast kompatibel machen, das ist richtig.
Ok, verstehe ich es also richtig, dass der GStreamer sozusagen als Player Backend den Stream abspielen kann und man “nur” das Stück Software im Empfänger so anpassen muss, dass es das Miracast-Protokoll versteht und die empfangenen Daten dann an dem GStreamer weitergibt ?
Nicht ganz. Der GStreamer Player kann derzeit noch keine Miracast Streams wiedergeben. D.h. auch wenn wir unseren Android Transporter so anpassen würden, dass er Miracast Streams generiert, können diese nicht vom GStreamer Player wiedergegeben werden.
Im Moment spielt das im Zusammenhang mit dem GStreamer Player auch keine Rolle, da wir die Protokolle H.264 over RTP over UDP nach RFC3984 verwenden. Und diese Streams kann der GStreamer Player heute ja auch schon wiedergeben.
one question, do you need a spezial ROM on the Device to use this? I thought this is implemented in Android 4.2 so i dont need a spezial Room on the device!?
What comes with Android 4.2 is Miracast. Since the Android Transporter is not compatible with Miracast it won’t work without our custom ROMs.
oh okay, i thought this Android Transporte IS Miracast compatible…. are there any plans to make it compatible with Miracast?
Yes we would like to do so, but currently we don’t have the time to work on the Android Transporter
.
hmmm okay, hope you will find the time for this… i thing when it is miracast compatible there are a lot of people that use this tool…..
Hi,
“Instead of using the Raspberry Pi as viewer for the Android Transporter you can also use the VLC or GStreamer player.”
Does it mean we can use VLC or GStreamer on PandaBoard as the player?
Or maybe need the Raspberry Pi Linux Kernel patch at first (with necessary modifications for PandaBoard)?
Thanks.
Yes you can use any VLC or GStreamer player. The only thing is that the latency is possibly not as good as using the Raspberry Pi. You don’t need the kernel patch since it is specific to the Raspberry Pi.
Ich habe hierzu mal eine Frage, ist es möglich diese Image nicht als Image zur verfügung zu stellen sondern so das ich sie in meine bestehende Rapsberry Installation einbringen kann? Ich nutze im Moment Xbian auf dem Raspberry und möchte nicht immer zwischen zwei Images hin und her springen….
Der AndroidTransporterPlayer für den Raspberry Pi ist OpenSource und kann hier heruntergeladen werden: https://github.com/esrlabs/AndroidTransporterPlayer. Auf der Seite ist auch eine Anleitung zum Bauen. Was dann noch fehlt sind die /usr/bin/AndroidTransporterControl, /usr/sbin/mdnsd, /usr/sbin/dnsmasq und /usr/sbin/hostapd Binaries. Diese können einfach von der SD-Karte unseres Images kopiert werden. Außerdem sind hierzu auch noch die Startup-Skripte unter /etc/init.d notwendig (ap, atc, dnsmasq, hostapd, mdnsd). Diese auch einfach kopieren und anschließend aktivieren:
update-rc.d mdnsd defaults
update-rc.d atc defaults
update-rc.d ap defaults
update-rc.d hostapd defaults
update-rc.d dnsmasq defaults
Was jetzt noch fehlt sind die Konfigurationen für dnsmasq und hostapd (/etc/dnsmasq.conf und /etc/hostapd/hostapd.conf).
Diese ebenfalls kopieren.
Im root Verzeichnis sollte sich außerdem noch eine Datei namens “create-symlinks.sh” befinden.
Diese einfach einmal mit root-Rechten ausführen: sudo /create-symlinks.sh.
Nun sollte hoffentlich alles auch auf einem anderen Image funktionieren.
Wäre es möglich das du die Infos hier noch auf der GITHUB Seite ergänzt? Gibt bestimmt paar Projekte die das ganze in ihr eigenes Image implementieren wollen….. Wäre wirklich super!!
This seems like an awesome project. However, I have followed the instructions above for connecting a nexus straight to a raspberry pi over wifi and when I try to connect to the pi the it comes up with an error about libgles2 and an invalid ELF header. Can anyone help?
Hm seems strange. Do you use our Raspberry Pi firmware image? This should not produce an ELF header error. Maybe you should try to flash the SD card again.
Yep, flashing the SD card over again fixed it. Should have done that before looking for help.
This is pretty awesome. Thanks for all the hard work!
Amazing work, this is awsome !
Bit noobish here, but is it also possible to make this work for htc devices? like the One X? (saw the reply on the gs3, but was hoping for better results for htc)…
many thanks in advance.
best regards,
Tjard
I really don’t know. We never tried to get the Android Transporter running on HTC devices.
Really nice work!
Any news about sound streaming?
Is it possible to mirror the Nexus 7 screen while surfing the internet?
Please keep working on the Nexus 7. Because of the missing support of Miracast for the Nexus 7, I put my hope on you!
We have a prototype that does audio streaming but we hadn’t had time to work on the Android Transporter since December. The prototype also supports WiFi Direct.
You already can surf the internet while mirroring the Nexus 7 screen when you plug your Raspberry Pi’s LAN cable into your home router. Then the Raspberry Pi acts as a WiFi hotspot.
Currently I cannot make a promise on the future of the Android Transporter since this is one of our “spare-time” projects. Let’s see where we get…
Alright, thank you. I keep my fingers crossed!
(And, for sure, I am not alone
What does “prototype” actually mean? A new custom rom or a special device? Anyway if you need someone for testing it, I would suggest myself as a voluntary tester.
By prototype I just mean an newer Android version for the known devices, the Nexus S, Galaxy Nexus and Nexus 7.
Hi,
Really neat demonstration. I am curious as to how you are doing Wi-Fi Direct? Is it on the Raspberry Pi or on the Phone or both sides?
WiFi Direct is working on both sides.
Hi,
I’d like to point out that there’s one thing you guys have done but it’s being downplayed in the post; you have made hostapd work with the RTL8192cu chipset. Myself and many others (just google “RTL8192cu hostapd” or read http://blog.sip2serve.com/post/38010690418/raspberry-pi-access-point-using-rtl8192cu), would really really appreciate it if you published the patch you wrote for hostapd to work with this chipset.
Thanks a lot!
The RTL8192CU drivers that come with the Linux kernel do not work (at least for older kernel versions and releases of the Raspberry Pi firmware).
.
So we just used the drivers that are provided directly by Realtek: http://152.104.125.41/downloads/downloadsView.aspx?Langid=1&PNid=21&PFid=48&Level=5&Conn=4&ProdID=277&DownTypeID=3&GetDown=false&Downloads=true
The driver package also comes with modified versions of wpa_supplicant and hostapd. Just use this and everything should work fine
what options did you use to build for the raspberrypi?
We used the same options that we used to build the AndroidTransporterPlayer. Just take a look on the Makefile on GitHub.
Is anyone else having the issue where the Nexus 7 simply won’t see the Raspberry Pi? It is really irritating :-p The worst thing is though, it worked fine to start off!
Hm, strange. Can you describe your setup steps a bit?
A workaround would be to enable the developer options in the settings menu and then use the options menu to manually connect the Nexus 7 to the Raspberry Pi.
Will this be available for the Samsung galaxy s3 soon?
No. We tried getting this running on the Samsung Galaxy S3 but the H. 264 encoder performance is very poor using the standard OpenMAX APIs. I think they are doing the RGB to YUV conversion in software and not in hardware.
Is it possible to stream from Nexus S to another android device which has VLC player?
I have never tried that but it should work.
I’m a new Pi user and I’m just using the WiFi AP functionality of this – works great, thanks! However, powering off the Pi without proper shutdown causes a problem with re-booting the Pi. There’s no way I can get to the OS at all. Had to re-flash the SD card to get going again. Is there a way to shutdown properly other than to SSH and do it manually?
I don’t know of such a method. But it would really be helpful
Thanks Daniel. Tried it after changing WiFi settings and saving the SD image and now the Pi appears dead, with just a Raspberry image on screen and one red LED on. Will try it with a ‘normal’ image. Never mind…
Ah, I know that problem. But this is not due to a corrupt filesystem. This is the Raspberry Pi hardware itself. We have five Raspberry Pi’s here and two of them show the behavior you explained from time to time. If you unplug the power cable from the Raspberry Pi and wait a while the problem disappears. Really strange…
Just got the same result myself – Pi now ok again. Odd behaviour from a digital device…
Thanks for the help and again for the AP image.
Is it possible to run Android Transporter without a Raspberry PI? Instead, can I use the raspberry pi firmware via bootable usb stick on a computer.
No that is not possible. The Android Transporter firmware for the Raspberry Pi only runs on the Raspberry Pi and not on other hardware platforms.
please get this for nexus 7 stock rom and maybe to a windows pc
I’ve managed to mirror the nexus7 to the Raspberry Pi using the test procedure explained in the AndroidTransporterPlayer GitHub readme, but I-m not able to do it the “normal” way, if there is any. The Raspberry Pi doesn’t appear in the Android Transporter app, and I can’t figure out what should I do to make it work. Any help would be very much apreciated.
for example, should I start the ui (“startx”) or it should be visible even without?
for the record, I’m using the Raspberry Pi wired, not with wifi adapter. Should I change something in the configuration?
Any help would be very much apreciated.
Thanks!
The Android Transporter and the Raspberry Pi make use of the Zeroconf service discovery protocol to find each other. Therefore your router has to correctly forward UDP multicast traffic from LAN to WiFi and vice versa. Maybe the UDP multicast traffic is blocked by your router.
You do not need to start X on the Raspberry Pi.
Hope that helps.
Any plans to update this to firmware 4.2.1 on the Nexus 7 grouper?
We plan to do this, but since this is a “spare-time” project we cannot promise to do so.
Understandable, the Users feature in 4.2.1 is really useful. Is this something you want to open source license, I am sure you would get a lot of help from the community.
Anyone got this working on the nexus 4 right now?
I have the raspberry transporter image running, but my nexus 4 is unable to find a screen in the wireless screen menu on the phone.
like here:
http://images.anandtech.com/doci/6440/2012-11-13%2005.08.25.png
vlc rtsp://:9000/android.sdp
with wireless screen option activated on the nexus 4 does not work either. i just get a connection refused.
Since the Android Transporter is not compliant with the Miracast specification it does not work with the LG Nexus 4.
You have to use Miracast dongle to get the screen mirroring working with the Nexus 4.
Could Android Transported be flashed with MultiROM? It needs a kernel with Kexec-hardboot support, if it does have it’s own modified kernel.
So, does this custom ROM flash it’s own modified kernel? and if so, could it be possible to include Kexec-hardboot support? I could do it myself, but as far as I know, you won’t release the source code, won’t you?
This could really solve the issue of flashing a ROM whithout Gapps support…
The Android Transporter firmware image includes a custom kernel. But the only thing we added is a custom LogCat group named “log_at” for the Android Transporter. E.g. you can add this group to samsung/drivers/staging/android/logger.c.
With this Linux kernel patch you should be able to run the Android Transporter firmware.
Could i run the rapi Linux in a vm?
No, you can’t. We make use of the Raspberry Pi’s proprietary OpenMAX API which only works on the real hardware.
Well I have a Samsung galaxy s3 with android jellybean 4.1.1 running on it.
I wanted to know if I could possibly connect my s3 to raspberry pi and mirror it on my tv as my s3 already contains the miracast (wifi direct) i.e. like you said it’s the same as android transporter.
So does that mean i would just need to configure the raspberry pi? And than connect it to my galaxy s3?
Many thanks
Sorry, but it is currently not possible to use our Raspberry Pi player in conjunction with the Samsung Galaxy S3. One problem is that our software streams the H.264 content via RTP (RFC3984) while Miracast uses the MPEG-2 TS streaming protocol.
So both technologies are very similar but they use different transport protocols.
Hello,
First of all thank you very much for this project!
I have only one question:
Is it possible to connect the nexus 7 AND the rasspberry pie to my home network using wifi and Start the transporter? I was only able to get it working using an Ethernet connection. I read through all the comments but it seems no one had asked that yet (maybe i have overseen something….)
So is there something wrong with my setup or is it simply not possible to connect through wifi and Start the transporter?
Greetings from Germany
Yes it is possible to connect both devices as clients to a WiFi router. Therefore you have to stop the WiFi hotspot on the Raspberry Pi. It is started during boot by init. Just use update-rc.d to disable hostapd startup. Then reboot and use the wpa_supplicant comand to connect your Raspberry Pi to your WiFi router.
Hello there,
Good job on the android transporter. I wanted to know if your custom rom is different from the 4.1.1 on my galaxy s3??
and is there any possibility that this android transported can be turned into an app in the near future, rather than us (users) flashing and installing custom ROMs?
and whats up with the google play store in your custom ROM? is it not accessible or?
many thanks and keep up the good work
Yes it is. We touched some services of the Android platform to make it work.
The Android Transporter requires a firmware upgrade, since we use a lot of private API that is not available in the Android SDK. Furthermore we do not support the Google Play Store.
But with Android 4.2 Google introduced Miracast into the Android platform, which is basically the same as the Android Transporter.
Great project !
Is there any news about Miracast support ?
Thanks, currently there is no news about Miracast. Since the Android Transporter is one of our “spare-time” projects we are not constantly working on it. Maybe I find some time to work on the Android Transporter in the new year.
Any plans to release the android source in the future? Even just for the playback element (as a reference example for low-latency h264 playback would be immensely useful to alot of people)?
Oh, and as a quick followup, is there support for multicast, so you could potentially have your one android client serving up content to other android clients/rasbperry pi clients simultaneously?
Currently there is no multicast support but is sould be only a minor change to enable that feature.