|
Location:
Wed, 30 Nov 2005
[/seattlewireless]
permanent link
Tue, 29 Nov 2005
SeattleWireless Tower Fundraiser
SeattleWireless has been presented with the grand opportunity of collocating on top of a large radio tower on top of in the Seattle area at no cost! But we need your help to make this project a reality. One of the most difficult engineering obstacles when building a community wireless network is access to high locations. WiFi signals require line-of-sight between two locations in order to function properly. Building a network within a juggle of large, concrete apartment buildings and steel high rises, even over a couple blocks is a monumental task. This is especially true when noting that SeattleWireless projects are solely financed on a need-by-need basis by members. Our nodes are built with inexpensive, off-the-shelf hardware, and we even climb rooftops in the pouring Seattle rain. However, a radio tower is not your typical roof top. There is no elevator to the top of this structure! Skilled and insured tower climbers need to be hired, weather hardened gear needs to be purchased, and care needs to be taken on hardware selection so that we only need to hire a climber once. A tower location, such as this one located on Capitol Hill, not only helps expand our network in the Seattle area, but ultimately opens access from many other locations in the Puget Sound area. It will provide our community network with a high, central location to bring our network to a critical mass required to foster further growth. We have budgeted $2500 to purchase the required hardware, contract a climber to install the gear, and cover any additional hardware costs and future site maintenance. Due to the significant costs of this project, we need your help! We have been offered the unique opportunity of free tower space with no recurring costs. We have the technical skills, the facilities, all we need now is your generosity. Please visit http://www.seattlewireless.net/fundraiser/ to help out -- even if you just want to donate a couple bucks.
[/seattlewireless]
permanent link
Fri, 18 Nov 2005This project is really picking up a lot of steam. About one week ago, Surj Patel started asking a few peculiar questions about the GM862-PCS....the kind of questions one asks with intent to build their own homebrew cell phone from commodity parts.. The plans were similar -- gumstix, cheap surplus LCD, and GM862. These three components are the key ingredients to the "brains" inside such a device. If you have read any of my previous articles, the GM862 provides voice/data capabilities and is controlled via serial port. Word of such a crazy project has started to hit the mainstream already. CNet wrote an article earlier this week titled Build it yourself cell phones. With this article came more interested people out of hiding, and more help means this project is going to take off like crazy. A few things have changed since i first purchased the product. Telit announced availability of a Phython version of this product. This can make intial prototyping quite easy, along with providing the "glue" to either avoid the gumstix in the first place (less interesting; yet has applications) as well as provide a better abstraction layer for easier control of the GM862's interworkings. Such an "API" or abstraction layer would also be useful when supporting more than just the GM862 (yes, there are more modules out there than this...and they'll be even more soon). This might be a smart idea to avoid redundant efforts. Why build a cell phone? Good question. I have a hard time answering this question, myself. I think the biggest reason why I am so interested is that all cellular hardware platforms are very closed. Since the inception of the camera phone on the 1xRTT networks, I immedately invisioned how nice it would be to be able to write native code for my handset. Lets see...100Kbps symetrical throughput, camera on front of flip, along with 80x60 screen, full audio capabilities. Gee.. i could do video conferencing with this handset...oh wait..no i cant...platform is closed, and java cant talk to the camera or the outside screen. Well, then, I have a button on the side of this Sprint phone....i could deploy push to talk and just use a low bitrate vocoder (like the onboard QCELP encoder/decoder). But no, i cant. I'd have to write native code to run such a SIP app in the background. I had to wait 2 more years for Sprint to finally release such a beast. Since Java VM's are limited and slow, most phones cannot even run these apps in the background, it serverely limits a mobile developer. If we only had a hackable platform with direct access to the hardware, our mobile dreams would become our reality, and we would stop lusting over those Japanese and Korean handsets once and for all. Or maybe the fundimental answer is, I do it because I can.
I think the most unusual is lavender, but at least it taste like it
smells.
Thu, 17 Nov 2005I was given a VIP pass to see Stephen Hawking in person at the Paramount yesterday, so I had to attend. Unfortunately after I arrived, it was announced that due to some heath issues, he was not actually able to make it to Seattle. Stephen's lecture coorinator gave us this story: Stephen was pulled off the resporator he sleeps on last Monday, and flat-lined. He was resuscitated and everything turned out to be okay. Stephen still wanted to go to Seattle for the lecture, but his doctors and wife vetoed the idea. But fear not, there was a production crew of 8 Intel employees in two Satellite trucks to save the day. The LCD projector turns on, and a web browser at an Intel website pops up. It is some sort of web conference site, allowing you to view slides along with the cast. The video starts buffering and streaming at 2280kbps, and we watch a jumbo version of Stephen speaking for about an hour or so. The operator was flipping between slides and the video stream, and accidently closed the browser a couple times, but otherwise it worked out pretty well. At the end, it was question time. No, apparently we can't ask questions directly anymore. We were given a canned top ten list instead. Questions ranged from what Stephen's take was on the Simpsons episode he stared in, to stem cell research, the mars space program, and what his IQ was. Even though I did not get to see im in person on the stage of the paramount, it still was a great moment to see the man talk about the origins of the universe.
Fri, 11 Nov 2005
Hacking The Knows Your Name Elmo HOWTO
Intro People have been asking for a HOWTO on messing with Elmo. This is all a work in progress, but I will still share with you my findings so far. There are a couple of things that are unknown at the moment, so if you figure out something new, please be sure to contact me at the email address above. Elmo Overview
Elmo
Knows Your Name I have not dared to crack open this device (its tomorrow's present for god's sake!), so I do not know what exactly is on board. I would expect a very basic processor or programmable logic chip, coupled with some sort of memory, and of course, a USB controller. Getting Started After you install the software, I suggest you do the initial configuration. You will get an idea on how this device operates. Ultimately, you will use this to push out your tweaks. Files of Interest There are two directories, "names" contains samples of about 15,000 names. "sounds" contains elmo spoken phrases in audio files. The audio extension is "rbf". I have not been able to determine this file format. I have tried to import it as a raw format using a-Law, u-Law, etc. but no luck. There are strings of zeros in the audio files, so I suspect that if compression is actually used, its some sort of ADPCM variant. Without being able to convert these files from a usable format, we cannot create new files just yet -- but keep practicing those Elmo voices, i'm sure its format discovery is just around the corner. Another file of interest is temp.inf. This contains a sort of scripting file that defines what audio files are played in what order. It also has variables, various groupings to handle games and songs, and a memory map at the bottom of the file. There are also some files that appear that contain both a human-readable and numerical representation of the variables you configured in the software. These are not too interesting. doll_ext.bin contains something, but I am not sure what it is. Is it code? Is it a linked and binary version of temp.inf? Who knows. Tell me. Playing with temp.inf This cute, innocently named file has most of the guts. Its very easy to follow, but I will document the syntax as best as I currently understand it. The file starts with "doll_ext.bin". I don't know what this is yet. Subroutines are defined throughout most of this file, with a label, like PL_001:. There are GAME and STORY labels near the bottom that link to these labels. The PLAY function allows you to concatinate various audio files, delays, and variables which link to dynamic sounds (such as the child's name). Elements are delimited with +. Example Time Honestly, I found Elmo's cultural insensitivity a little insulting, especially with its very Westernized selection of foods. So for this example, Elmo needs to like to eat whale and seals too, since my daughter loves that stuff we keep in the freezer. PLAY ONE_DAY+[100MSEC]+ELMO+EAT+WHALE+AND+SEAL+[300MSEC]+MMMMMMMM+[200MSEC] Scripting Elements I have seen the following variable elements:
#CHILDSNAME -- child's name (as defined) #FRIEND1 -- friend 1 (as defined) #FRIEND2 -- friend 2 (as defined) #FRIEND3 -- friend 3 (as defined) #PAUSE -- This is a significant pause, enough for a child to respond #FAVCOLOR -- color (as defined) #FAVANIMAL -- animal (as defined) #FAVFOOD1 #FAVFOOD2 #FAVFOOD3 #AGE #FAVDRINK Other elements:
[nMSEC] -- n Delay in milliseconds <BIRTHDAYSONG> -- some sort of special routine, no references Linking it all together If you really want to start screwing around with Elmo, its best to modify a program or game. I suspect that, by comparing behavor and looking at the list of items, the device will select a random line or go in sequence down the list. Here's what I mean:
GAME3_LABEL:
PL_024,PL_136,PL_137,PL_138,PL_140,PL_084,PL_619
PL_124,PL_126,PL_128,PL_125,PL_127,PL_129
PL_097,PL_094,PL_134,PL_131,PL_133,PL_135,PL_131A,PL_133A,PL_135A
This plays a sequence of audio files. Now, I have not been daring enough to modify games or create new ones (not sure if it will run GAME9_LABEL just because its there), so let me know what you find out. Crazy memory table I don't understand why this device has a bunch of built-in sounds, especially when the software pushes out most of the phrases. This could be just stuff that was built in the demo mode, since the demo is part of this list too. It indicates the byte offset from memory location 0 where the audio exists. I am not certain how it detects "end of file".
INTERNAL_SPEECH_TABLE InternalVersion00 00077571 SP18918 00077597 YOURE_A_GREAT_PRETENDER 00087751 YOURE 00090681 YOUR_BIRTHDAY 00096185 YOUR 00097171 YEAH 00101307 YAY 00112121 WITH_ELMO ..... 00397170 COUNT 00400292 BREAKFAST 00404230 BEDTIME 00408366 AWAKE 00411872 AND 00415192 A1_ELMO_TRYME_8K 00518868 A I am hoping that A1_ELMO_TRYME_8K offers us a little glimpse into what kind of files we are dealing with. I am guessing that if one word (about a second) equals about 4-5kB, these samples are either operating at 4000Hz, or they are ADPCM (4 bits/sample) at 8KHz audio bandwidth. ... or maybe the demo is just a higher sample rate so it fools us all into thinking this thing is actually inteligible. Demonstration No hack would be complete without a demonstration video. The audio is a little raspy (cell phone mic sucks, along with the low Elmo sample rate), but enjoy its glory. Click the movie for the...your know...the movie! To Do
Ideas Assuming that once this little file format issue is figured out, the hacker can actually remove the small, plastic device that goes inside Elmo, and "voice enable" just about any other stuff animal. I think your biggest issue is finding someone to do the vocals, but Dad or Mom could voice-enable a favorite teddy bear while he/she was away on business. I guess that would be cute.
Thu, 10 Nov 2005Knows Your Name Elmo Introducing the "Knows Your Name" Elmo doll! It features a USB interface and allows the parent to fully configure the doll with all sorts of parameters. Right now, the doll talks about her favorite foods, animals, and important people in her life (Its programmed to: Daddy, Mommy, Aaka right now). The crazy thing also knows what time it is, and starts talking about bed time when its..you know..time for bed! So a talking elmo doll with a USB jack in its back is begging to be hacked. While I just bought it tonight, it does show up as a HID (Human Interface Device) with no drivers needed. It has load a lot of audio files on your drive during CD installation (it actually installs all 15,000 names and phrases onto your freaking hard drive, making the install long and painful). The audio files are in "RBF" format, with the magic header of "WDMdM". Looking at the files with a binary editor, it is likely a raw format. Hacking Knows Your Name Elmo or ELMO_SAYS+[100MSEC]+I_AM_WATCHING_YOU+[20MSEC]+#CHILDSNAME There is another file in the base directory called "temp.inf". This file contains a script of various commands. Here's a snip:
or this silly number:
PL_246: From first glance, this script file is compiled into some sort of binary data file which links to a glob of audio. The unit has limited space, as i can only upload 3 songs...a bulk of this space is taken up by speech fragments. It looks like this Elmo is nothing more than an overgrown audio player in shuffle mode, along with a motorized mouth. It is very, very hackable. Maybe if I have more time alone with the thing, ill be able to get it to something really cool besides its default factory speech routines. I am going to have to work on my elmo voice though. ChatNow Move slightly over to the left Cybiko, make way for the ChatNow communication system. These 900MHz handsets feature 10 digit voice dialing, text messaging, digital camera, multiple ringers, push-to-talk button. You can even send pictures to other handset users, or assign them to entries in your phone book. 30 ringtones are available... Wow, thats gotta kick FRS's ass. I'm going to buy a pair.
*DAMN* After downloading Google Maps Mobile for my SprintPCS Sanyo MM7400, I immedately run this app. My screen goes completely blank, and suddenly, I have a full screen satellite view of north america. I can zoom in and out, go to vector map mode, with the same look, feel, and smoothness as google maps. The 1xRTT network makes it load as fast as it does on the desktop. After zooming in over my office building, I decide to start messing around with its local search functionality. I type in "Coffee", and 3 Google Map-isk dialog boxes pop up showing me where I can get coffee in Bellevue. It also tells me to hit 1-9. As I hit these numbers, the app quickly pans and centers over the item of interest -- even if they are on the screen or down 5 blocks. The dialog boxes even dynamically point and shape as they swish on and off the screen. Need directions? No problem. Click "Directions" and you get a nice green dot you can position on any city street. You then position the end dot. If you do not want to visually describe your start and stop locations, it also accepts addresses. After you place your start/stop points, it routes and gives you real-time directions. The only downside is that, since it is a third party application without a signed GPS API certificate, it cannot pull location data from Sprint. I am sure that once that is functional, this will be one killer LBS app.
Wed, 09 Nov 2005MindCamp was COOL. I am working on a post mortem for the issues we had with WiFi. In short, our social experiment involving mesh networking in the client space failed. I will explain more later. The backup plan was to use OLSR in the distribution layer, and use access points in the access layer. This allowed us to deploy a wifi network with *no* cable plant. AND NO WE DID NOT USE WDS FOR GOD'S SAKE. It was a success--although it could be greatly improved. Matt, Rob, and I will be putting some serious cycles into making this an even better solution. I would have to say the notable experience was a few hours spent offline with Michael Laine after his Space Elevator presentation. Michael is working on something great, and it should bring countless other, more "down to earth" (he he), innovations. An unlikely innovation in the DVD arena captured my imagination. Since I first set eyes on a DVD player (ultimately the menuing system, and the apparent extensive scripting capabilities), I thought it would be cool to have a movie that either had a different plot every time you watched it, or perhaps a plot that stopped at various decision points. As someone who has experience in the whole video scene, its difficult enough to write one plot, let alone 2^n plot deviations with just two choices alone. I have never had the time or the ability to make such a complex story line. Make My Day (DVD) does just this. Its a choose your own adventure DVD!! The viewer is given almost an endless amount of choices as the video progresses. The disc is a comedy, and naturally has a very indy film feel to it. I thought this DVD project was so amazing, that I am going to buy it for christmas. Near the end of the camp, I figured id show up to this one talk about "Cell phone programming". I almost didn't go...it sounded like someone explaining how to bypass phone subsidy lock codes so they could be provisioned to operate on other carriers. Thankfully, this was not the case! UIEvolution has just launched something quite amazing called UJML. UJML is a programming language done in XML. I have no idea why the hell anyone would want to use the XML framework in a programming language, but they pretty much just use them all as functions and ditched the brackets. UJML is a VM that rides on top of BREW or J2ME, and all code is platform independent and automatically scalable. While it is not multithreaded, it has an extensive system for handling events (like a VBL, etc) which makes its perfect for games. UJML has all the "meat" of J2ME in a very easy to understand format. Anybody can crank out some amazing software for mobile phones using this system. The best part: Everything is free. The IDE, the compiler, the emulator, even the system that does OTA installs of your software. Since UJML makes apps that are truly platform independent (unlike the slight variations seen with J2ME and BREW VM's), you can use the same code, graphics, and sounds from a java-enabled plasma TV, to a Treo, to even a low end 120x120 color cellular phone. UJML also has XML call systems, plugin library support, and even a method of retrieving UJML code on an external internet host and executing it after download. This allows the coder to create very large applications that work on even the smallest of memory restrictions. Overhead is there, but minimal. The system will handle multiple sprites and events without any issues. It sounds like I need to stop development on my WAP MMORPG and move this over to UJML. I might have one heck of a killer app on my hands.
[/seattlewireless]
permanent link
|
Make some extra cash with your blog too: |