UPDATE July 14, 2012: I updated the APK to contain rough API documentation. Just navigate to http://192.168.1.1:8080/api.html adjusting the IP address to match your Q.
OK, it’s late (I mean early), but here’s a very rough alpha version of QRemote which let let you control the Nexus Q via a RESTful-ish API and your web browser. It’s developer-only friendly at the moment, but that shouldn’t a problem since only Google I/O attendees have them. If you’re brave enough to test it and have feedback, hit me up via Twitter, Google+, or email. I’m lazy at approving comments here on the site. Anyway, to the point…
Here it is in all it's glory.
- Download QRemote.apk here.
- Upload the file using adb with the following command: adb install QRemote.apk
Unfortunately, you’ll have to manually start the application every time you power on the Nexus Q. I’m working on to get the boot message receiver to work with a signed package (seems to work fine with a debug build).
- Start the application with the following command: adb shell am start -a android.intent.action.MAIN -n com.blinnikka.android.qremote/.StartServiceActivity
- Open up a browser and navigate to port 8080. For example, http://192.168.1.1:8080/
- You need to start it manually every time you power up the Nexus Q.
- You have to know your Q’s IP address.
- You need to load up a playlist with the Play application on an Android device.
- Videos are not supported.
- Run the following command: adb uninstall com.blinnikka.android.qremote
You will need to uninstall and re-install the application if you had the initial Alpha version as I changed the keys used to sign the application. Just follow the instructions above to uninstall and install again.
Here are a few random tidbits I’ve come across while messing around with the Q.
- Operating System: Android 4.0.4 Ice Cream Sandwich (SDK/API 15)
- Processor: OMAP4460 (dual ARM Cortex-A9 CPU and SGX540 GPU)
- RAM Memory: 1GB LPDDR
- Flash Memory: 16GB NAND
- Connectors: TosLink (S/PDIF) audio, 10/100BASE-T Ethernet RJ45, Micro HDMI (Type D), Micro AB USB, Banana jack speaker outputs (2 right, 2 left, 4 total), AC power (Figure 8)
- Wireless: Wi-Fi 802.11a/b/g/n
- Lighting: 32 RGB perimeter LEDs, 1 RGB status/mute indicator
- Hardware controls: Rotating top dome (volume control), capacitive touch sensor (mute)
- Weight: 923 grams (2 pounds)
- Diameter: 116 mm (4.6 inches)
- Product name: Tungsten
- Device name: Phantasm
- Board name: Steelhead
- Bootloader: steelheadB4H0J
- The Nexus Q Android application is called “setupwarlock”
- It looks like the hardware and software might support up to 2048x2048 resolution
- Closed captioning works for movies (or at least the Transformers movie that was given away)
- iFixit teardown: http://www.ifixit.com/Teardown/Nexus-Q-Teardown/9636/1
I’ve only quickly looked at the power consumption, but my Kill-A-Watt shows between 2-3W when the Q is on and playing music and the same based on a quick test of movie playback. This is with Ethernet and HDMI connected. The numbers will obviously be higher if you use passive speakers and the internal amplifier.
This is just a quick post to list out the applications that I’m aware of that use the LEDs on the Nexus Q and their priorities within the system. The priority determines which application gets to control the LEDs at any given moment. Higher numbers represent higher priority. I haven’t looked at the code close enough to see how duplicate priorities are handled, but I’m guessing that that situation is not deterministic.
I haven’t put a lot of effort into verifying whether the descriptions match reality of what the applications do. I’m sure I’ve missed applications, too. Feel free to let me know if something is off.
|Priority ||Application ||Description |
|0 / 100 ||TungstenLEDService ||Master volume. Uses 100 to override everything when volume is changing and switches to 0 otherwise. |
|5 ||Visualizer ||Displays theme-based animations. |
|10 ||NetworkLedController ||Network status indication. |
|20 ||HubBroker ||Bluetooth Pairing portion of the @home broker. |
|25 ||HubBroker ||NFC handler. |
Here’s a quick list of ways I’ve been able to control playback using the adb developer tool.
- Send media key codes.
- Send broadcast Intents.
The values for both options are listed in the following tables.
adb shell input keyevent 85
adb shell input keyevent 88
adb shell input keyevent 87
adb shell am broadcast -a com.android.music.musicservicecommand.togglepause
adb shell am broadcast -a com.android.music.musicservicecommand.next
adb shell am broadcast -a com.android.music.musicservicecommand.previous
adb shell am broadcast -a com.android.music.musicservicecommand -e command play
adb shell am broadcast -a com.android.music.musicservicecommand -e command play
asb shell am broadcast -a com.android.music.musicservicecommand -e command stop
Do the following at your own risk!
Now that we’ve got that out of the way, here are some caveats:
- The internal “SD card” will be erased (mine only contained empty folders).
- You will unpair the device from your other Android devices and will need to set it up again.
- I wouldn’t flash the boot ROM I’m providing below. I know I haven’t.
- Nexus Q
- Android Development Kit, including the adb tool and fastboot.
- Plug your USB cable between your computer that contains the Android developer kit and the Nexus Q.
- Run adb reboot-bootloader . The LED ring will stay solid red. You should also be able to do this by holding your hand over the mute LED when it boots. Just let go when the ring turns red.
- Run fastboot devices to make sure you’re connected.
- Run fastboot oem unlock to unlock the bootloader.
- Within five seconds, run fastboot oem unlock_accept . The Q will erase user data and reboot.
- Pair your Android device again with the Q.
- Turn on debug mode again.
- I also put together a new boot.img file that modifies default.propwith the following values:
- Download nexusq-boot.img.
- Run adb reboot-bootloader .
- Run fastboot boot nexusq-boot.img to start the Q with root permissions.
Now you can upload su and back your regularly scheduled Android hacking.
adb reboot recovery results in pulsing red LEDs. Touching the mute LED flashes white. I didn’t see anything show up via the HDMI connector. The only way to get out of this mode was to tap the mute LED repeatedly (about five times).
You can run the adb utility to initiate a backup, but you’ll get a prompt on the screen to approve the backup. Since there’s no keyboard, you can’t type the password and click OK. Here’s how to do it without an input device.
- Open two command prompt or terminal windows.
- Run the desired backup command in the first window, such as adb backup -apk -shared -all –system .
- Enter the following commands in the second window to trigger keypad movements (down, right, and enter):
adb shell input keyevent 20
adb shell input keyevent 22
adb shell input keyevent 23
You'll now have a backup file named backup.ab on your local machine.
Since I missed the May Home Automation Month, I really need to make up for it somehow. So here’s a quick video of Remoat (http://remoat.com), a little utility I’ve been putting together in my spare time. It’s not really production-ready, but I’ll make the source available for the hackers out there.
Currently it needs/supports the following:
- Windows Media Player: Plays music from your library.
- MiCasaVerde Vera: Allows you to turn on binary devices, such as lights that you’ve got configured.
- mControl 2.X: There’s some old code in the package from when I was running mControl on my WHS box (which had sequential disk failures and in the end killed my RAID –> switched to a QNAP NAS). Unsupported.
- Windows Vista/7 speech recognition: This is required (part of the operating system anyway).
- Windows text-to-speech: You can specify which audio device is used for speech output. This lets you hook up a pair of speakers that are always on and have the PC hooked up to you’re a/V system for better quality playback. Part of the operating system.
Nexus Q... Another Google IO giveaway. Problems so far:
- Only getting 2 channel stereo for movies. Unacceptable.
- Continuous buffering issues on a 30M cable connection. Unacceptable.
- No basic remote. I need to unlock an Android device just to hit pause. Unacceptable.
- Both my tablet and phone are now stating that my account isn't allowed to make changes. Unacceptable.
- MAC address not printed on device or box. A pain to set up my firewall and WLAN since they limit access by MAC address.
On the other hand:
- Design. Nice. Funky.
- I can turn off the the LEDs. Excellent.
- Integrated power supply. Yes, please.
- HDMI connector. Thank you.
Overall, I'm here trying to watch a movie and... I don't have an option to download (to avoid the buffering issues), and it stops every few seconds to buffer. Sorry, but #fail.
Update: So I got bored waiting for the buffering and decided to check Google+ and watched a YouTube video. Now I can't continue watching the movie. All I get is a message stating "Playback stopped because you began playing this video on another device." #epicfail
Update 2: Did I mention the fact that I can't configure the Q anymore? Yes, I did. All I get is a message stating "Only the owner of this Nexus Q can modify its settings." As far as I know, I didn't rent it for 24h, it was given to me. Do I really need to pull up the Android SDK to reset the damn thing to get it working again, like I had to do with the Samsung Galaxy Tab?
Update 3: I ended up finishing the movie using Google Play / YouTube. But guess what? I paid for HD and YouTube only provided me with a 480 quality stream.
Update 4 (7/10/2012): Just got an email from Google that they've refunded my rental based on the issue I had. Plus one for Google. I stopped using the PlayStation Store for anything a long time ago when they declined to refund me for a movie that simply wouldn't play and they couldn't solve the issue.
Kent posed the question whether the NetGear GS108T would solve his stuttering problem with HD and the XBOX and whether the SRW2008 I bought required any settings to be modified.
The GS108T might actually do the trick. The determining factor is said to be the size of the buffer memory in the device. The GS108T is listed as having “128kB per unit”. The GS108 I was using before lists “192kB on-chip buffering”.
Now the problem in comparing these two numbers is that the first might mean the device has a total of 1MB (8 ports x 128kB) and the second might mean a total of 192kB (Amazon lists 32kB per port, but the math there doesn’t add up with the specs (8 ports x 32kB = 256kB). I just don’t know if that’s the case, I can’t find solid info on that. But it doesn’t make sense that the cheaper non-smart model would have more memory.
As for the SRW2008, Linksys doesn’t make it easy to find the buffer memory size. I actually found it here:
In the table at the end, the SRW2008 is listed as having 1MB of buffer memory. So if that means it’s a total of 1MB, then it has the same amount as the GS108T you are looking at (1024kB / 8 ports = 128kB per port). In short, I don’t have a simple answer to your question. If you do go with the GS108T, please let me know if it works.
One other thing to take into consideration with smart switches is that many of them have fans in them, often noisy. This is simply because these devices are meant for businesses and a living room. This shouldn’t be a problem with the GS108T, it’s listed with “Acoustic noise: 0dB”, so it shouldn’t have any fans.
As for configuring the Linksys SRW2008, I didn’t have to fiddle with the settings. All I did was set an IP and password for the device and left everything else at their defaults.
UPDATE: Kent bought a NetGear GS108T and it solved the stuttering he was seeing. Anyone else have switch models that have resolved the issue?