Other Projects

Spykee iPhone Hack

At left you’ll see my first cut at a rudimentary Spykee mini-console for iPhone. If you’re familiar with the standard PC or Mac Spykee console app, you’ll recognize many of the functions.

This app only implements a sub-set of the full PC and Mac consoles. I basically wanted to get some minimal functionality working before going too crazy with the UI and more esoteric features. Here’s what it will do:

(1) Move the robot, using the left, right, forward, and back buttons. Each press of the button moves a fixed amount.

(2) Turn the camera LED light on and off.

(3) Tell Spykee to take a snapshot.

(4) Turn ‘Video surveillance’ mode on and off.

Most importantly, the app shows you on the iPhone what the Spykee is seeing. It does not stream video in this version. It updates the “viewport” image periodically when the scene changes (or on demand with the ‘Update’ button). This keeps bandwidth usage down and still gives you a view of what the robot is seeing — and it even works on slow Edge connections.

It’s got another feature to help when controlling Spykee from a slow iPhone connection, where using the ‘Resolution’ button, you can flip between a lower resolution (but much less data) image and the normal full resolution Spykee view. This, and other features of the app, are demonstrated in the video below.

I made a video to show that, while this is still a hack, and is not ready to distribute by any means, it does actually work in real life, with a live robot. If I just provided the above screenshot, there’s no way to tell if it’s just a mock-up.

The video shows some of the basic functions as well as limitations. Even with those limitations, it is pretty cool (if I do say so myself), to be able to sign in and view what Spykee is seeing from anywhere, with just the iPhone without lugging around a PC or Mac, and even on a slow Edge connection.

I have not found any SDK or docs yet either. Yes, I sniffed the net and simply cloned what the real app was doing for a few of the functions. I have not really reverse engineered the whole protocol. I don’t know what half the bits actually mean. I’m hoping Erector/Mecanno release an API and/or docs, so I can modify this code to use a supported approach.

Walker, this is an embarrassing hack in its current state, not fit for public viewing. 🙂 It has a lot of dependencies, even for hackers and developers. As I mentioned, I’m hoping that Erector/Mecanno follows the lead of WowWee Rovio and releases an API and protocol specs. so that I can modify this app to use officially supported technologies (and perhaps add some more features that have been too hard to “crack” by hand). If they never do that, or don’t do it fast enough, I guess I’ll have to improve this app enough to release it as a documentation tool if nothing else. I believe it should work on iPod Touch.

Walker

November 26, 2008 at 9:40 am

ok thanks,
meccanno should release “API and protocol specs” (lol, i know nothing about that stuff) so that you can do this properly.
i hardly use spykee because of the fact that i need to have a computer to access it, have you contacted Mecanno about this, maybe they can give you a bit of info

Walker, I’ve tried to contact Mecanno but so far have had no success reaching them. Do you have good any ideas for how to contact them?

Antonio

November 29, 2008 at 5:10 am

Hi!
I’m a student that must use Spykee in own thesis.
I managed to move Spykee, but I would like to know how take the camera images.
Thank you.
Antonio

Stu

December 8, 2008 at 4:24 pm

Hi
I just bought a Spykee this very day, and I’m really impressed with it in general.
I’m looking forward to when you release this program, as I have an Ipod Touch and am thinking about using it around the home (or when at work) over the Touch’s WiFi connection. Are you going to be releasing the iPhone source code for this app?
You mention the Edge connection, but I’d have thought the WiFi connection from the iPhone would be a good starting point, does it work with the WiFi connection?
Would be very cool to use the Touch/iPhone to control it with, but if I were working on it I would concentrate on the video streaming capture angle as its not really practical without at least 5fps.
Still, a fantastic piece of work mind you!
Aside from that, I don’t think they’re going to release a proper SDK as its quite niche – less than 1% of all Spykee owners will prob be making use of it. The indication in the manual, and on the websites suggest it will be nothing more than the source code (Open Source) but still, thats a start as I wouldn’t mind having a ganders at that myself. I bet its poorly documented! 😉
I notice its an ARM9 CPU, with an 8bit microcontroller managing the motor. I’m thinking of adapting the firmware to add motor control to the head, but I’m not familiar with ARM9 code, and I’ve only dabbled with a version of Basic on the PIC chips. Would be a good way to start learning ARM development though!
I sincerely hope though that they release both the Windows code and the ARM/uC code.
Thanks for showing us your work!

Actually it looks like a substantial percentage of Spykee users have been asking Mecanno about the claimed source and/or SDK. $250-$300 is still a lot of money and a lot of the early buyers are clearly tech. types.

And Spykee’s competitor, Rovio already has an API.

As for Wifi, yes, the app works on Wi-fi. The reason I mention using it on EDGE is because making it work, in any practical sense, on a slow EDGE connection is much harder. and if it works there, it makes the app more interesting/useful.

Hey, still images are better than nothing for now. It is pretty cool to call up and get a remote picture of what’s going on in the house, and then move around and get new views at different parts of the house – so having real-world experience with what I have working now, without streaming video, I dispute the statement that it isn’t practical. I don’t think streaming would ever be possible over EDGE, but it should be possible over wi-fi to get some kind of frame rate, even if pretty low-res. It may require a proxy though to remix the video into a lower bandwidth format than what the robot delivers normally. Don’t forget that live streaming is a lot different than playing a Youtube video. Think how long it takes for a Youtube video to start playing.

Stu

December 16, 2008 at 3:02 pm

Hi
Thanks for your reply.
In terms of practicality, I personally wouldn’t want to use him on the go, for starters, 3G/GPRS data rates in the UK (+elsewhere) can be prohibitively expensive, so I would generally use him on a wired connection from my work PC (or with your app, over our work WiFi connection on my iPod Touch), and if I were abroad or out of my home city, I would only use it from a freebie/cheap hotel WiFi connection or a lobby PC or something.
One time I got stung for 1700 UK pounds (at the time about 3400 US dollars!) for using a 3G connection abroad, as a result, my use of 3G has been altered quite a bit!
The hope is that the new 3G iPhone -may- allow full streaming, what with HSDPA – signal quality/contention rates allowing. But I only own an iPod Touch and wouldn’t buy a 3G iPhone.
What frame rates do you achieve with your app over WiFi?
Its interesting that frame rate you have reached so far over EDGE – I’ve seen something much like this in fact on the PC Spykee application, when I connected from work to my SpyKee at home, about 7 out of 10 times connecting to him, I see only about 1 frame every 5 or so seconds (0.2 fps!). The experience is similar to what you show in your video. Driving him is nigh impossible as he shoots off and ignores my ‘stop moving!’ instruction (lifting my finger off the UP key!). I notice though that you have good control over him with that frame rate.
Is this particular frame a keyframe or something out of a simple stream?
I’m not sure if my home WiFi connection is getting bogged down with interference, but the remaining 3/10 connection attempts, he streams just fine at hi-quality, and is easily drivable, this is from my work PC (which is wired ethernet).
I’m in communications right now with Meccano tech support, my comments have been forwarded to the engineers. They’ve suggested I connect via port 9001, but I haven’t set that port up as forwarded on my router so I doubt that would help.
Strange though that my WiFi connected SlingBox (not used at the same time as SpyKee) works just fine all the time, makes me think there might be a firmware malfunction in the Spykee or something.
Yes an occasional update every so often is good for stationary surveillance and maybe turning left and right for different views, but I would only be banging him against walls and tipping him over! 😉
Thanks again for showing us this brilliant little app, can’t wait to get my hands on it!
FYI, this is now my THIRD SpyKee! My first had a dead battery out the box, the gearbox broke on my second SpyKee as I tried to drive him up a makeshift ramp (warning- he’s only got a basic plastic gearbox which isn’t up to much). Touch wood that the third one will survive. Luckily, my local Tescos where I bought him from aren’t being difficult as I repeatedly return them!
How is your SpyKee holding up? Is it your first one still?
.
BTW – Any ETAs on this app? Or have I just missed a recent posting?

Thanks again!

Gio

December 22, 2008 at 2:32 pm

Hello, sorry my english

just my two cents: first… GREAT APP I WANT IT!!! 😀 😀 😀 (casually I’m a registered iphone dev so maybe we can exchange the device iD cof..cof… ’nuff said)

Second… I own also a Rovio, using RovioDriver app for the iPhone it works like a charm: in 3G mode (3 euros/week here) the video stream is like any other standard DSL connection (aside resolution obviously, and a bit of lag in driving).
In WiFi mode works exactly like my Mac (maybe because also my mac is in WiFi lol)
In GPRS(EDGE) it seems more like a slideshow and I cant drive at this framerate (too dangerous).

BTW RovioDrivers uses accelerators to drive the Rovio (aka: just rotate the iphone like a wii remote), i strongly suggest this feature, also because all the screen is used for the video 😉

Sean

December 24, 2008 at 10:14 am

Hey app looks class, I know you said it’s not ready to be shared but there’s plenty of people who’d love to get this app!

Tom Yates

December 26, 2008 at 5:56 am

MrBlog,

I think you are really missing the fact that people want the source code to help work out what you have learned about the spykee protocol. The iPhone app doesn’t interest me in the slightest (as i don’t have one), we just want the source luke :). Can we have it, or at least a blog post of the partial spec?

Cheers,
Tom

Allan

December 26, 2008 at 10:51 am

Tom, Here, here. I don’t have an iPhone – getting a Verizon/Samsung Omnia and would like to do the same – control the robot with my phone. Just need the protocol. Kudos on working through all the wireshark/ethereal stuff 🙂

Hi Mrblog and hi all, we have created a Spykee Dev community for help developper to do apps for spykee

great Job Mrblog , this is a pleasure if you join the coimmunity 😉
Take a look to http://spykeedev.freehostia.com

see you soon
JimFx

andy

December 31, 2008 at 4:41 am

where do you download it

pjd

December 31, 2008 at 12:15 pm

perhaps you can help me!!! i have just put my spykke together and registered it. i down loaded the console application. both my computers pick up and connect to the spykee wireless connection however,when i open up the console and the connect box appears…….. my spykee is not showing up. i have reset the spykee several times and re-installed the console on both computers…. the spykee helpdesk seem to be otherwise occupied……any suggestions ?
thanks in advance.
pjd

would you be able to create an application on the palm pre? the mojo sdk is public, and it would be nice to use my robot from my phone. i couldn’t pay too much, but i’d be willing to negotiate a fee for your time.

@shanerooni it looks like the version of Applewebkit on the Palm Pre doesn’t support the functionality of the iSpykee app. But we’ve only been able to test using the emulator (not a real device) so give it a try and let us know at: http://groups.google.com/group/ispykee/t/5cf98711253a1838?hl=en