BeagleBoard/James

= Introduction =

James (acronym for Just A Miniature Entertainment System) is an application providing a home entertainment solution. It is also called James as it aims to be a global "butler" application providing various services. What functionality is actually offered by James also depends on the actual hardware present in the system.

Rationale for calling it Miniature, is because the system will be small in physical size (but not in functionality). Aim is also to reuse as much open source software as possible.

And actually entertainment system is a little bit of a misnomer. James will provide all kind of home services, so it could also e.g. provide NAS functionality or even a web server.

= James Hardware =

Core of the James development will be a BeagleBoard, although the code should be platform independent. BeagelBoard was chosen because it is very small (although functionality wise it can be big).

Additional hardware that can be added will be:
 * Webcam support (initially aiming at the pwc driver as I have test hw for that)
 * Perhaps a 1.8" hard disk
 * Support for USB phone
 * LCD display (preferably touch screen/pixel based display, but it could also be a line oriented one like the one from Pertelian
 * Remote control support (IR receiver)
 * bluetooth
 * Support for WII-mote (requires bluetooth)
 * WiFi
 * A USB analog and/or DVB-T receiver.
 * USB CD/DVD drive

Ideally of course would be to have an expansion board with features like Bbluetooth, WiFi, IR, USB hub), but as such a board does not exist yet initially the system will use standard USB components (although may be with the cover removed and mounted together). Aim is to select small components. As I am not a skilled hardware developer, creating an expansion board is outside my capabilites.

= James Software =

As written above James will be open source and will use open source as much as possible. Actually the programming effort will be mainly porting open source applications (with the associated debugging and problem fixing) and writing the UI software. For UI the idea is to use something web based. That would allow controlling the device locally, but also remote.

Software functionality that is envisioned is the following:
 * Personal Video Recorder (PVR): see http://www.dse.nl/~meulenbr/pvr/pvr.html for some documentation and access to a prototype running on ARM
 * Media rendering (mplayer?), also from USB/CD/DVD if present
 * File server/NAS (samba/swat)
 * Bluetooth headphone (bluez a2p profile)
 * Internet telephony preferably with camera support (SIP based; several packages exist (sjphone, wengophone, ..., but I seem to recall most if not all are binary only). This needs to be sorted out.
 * PBX functionality (asterisk)
 * Security functionality (motion pacakge)
 * Photo retrieval from digital camera (both mass storage and ptp; mtp ?)
 * Audio grabbing from CD
 * Maybe: writing of CD/DVD (e.g. cdrecord)
 * Maybe: uPnP playback
 * Maybe: uPnP server
 * Maybe: interface with GSM phone (e.g. using the gsm as a remote control using bluetooth)

Supporting software:
 * For wii-mote (CWiid (includes libwiimote))
 * Lirc (for remote control)
 * Web server for serving the UI
 * Web browser for displaying the UI locally

UI will probably be done with flash or with ajax. I am planning to make a small prototype, but due to other things I did not get to this yet. The UI for the prototype is done with html, javascript and css stylesheets.

= Infrequently Asked Questions =

Where are the frequently asked questions
LOL, there are no frequently asked questions. This is so new that any question is infrequently asked (or not at all). This section is here to give answers to some of the things that might pop up while reading this.

Great! Where can I download this? When is this available?
Not so fast.... Some PVR functionality is already available but porting to beagleboard has not started yet, as I do not have a board yet. I'm planning to order a rev C board as soon as they become available. Meanwhile, I'll do some preparation and prototyping (probably on my old but trusty NSLU2, as it can run Angstrom, and also runs the PVR functionality). Anyway, availability will definitely be incrementally. I will start with some core functionality and gradually add functionality.

Why don't you get a rev B board and start right away
Good remark, but I'd like to get a rev C board as I would like to have the LCD interface and the additional memory it has to offer.\\ Of course I could buy a rev B board, but I think buying both a B and C board would probably not pass our internal budget committee (and I feel no desire to have an argument with the Mrs. on this :-) )

Of course if you want to support the development and donate or loan me a board, feel free to get in touch with me.

Is this feasible? It looks very ambitious
It is definitely ambitious. Then again a bit of ambition does not hurt.\\ And feasible: I think it is, but only time will tell. A lot of the software is available in the open source domain. I have quite some experience porting software, and a lot of things I did before on NSLU2 where I am eFfeM

But... in the end only time will tell!

Cool, but it would be cooler if you add function XXX
Could be. Feel free to bring XXX to my attention. If there is open source software to support this function, please mention it. Depending on the amount of effort needed and the potential benefit for others, I might pick it up earlier or later.

Can you support hardware device YYY
Depends. I try to make use of existing software as much as possible and try to be device independent, so it might be supported already (perhaps with a little effort). Then again this also depends on what kind of hardware it is. If it is something nice I'd want myself, I might buy it. If not I might still support it if someone borrows or donates me a piece of hardware to allow testing, if I consider it to be of general use. Then again if your problem is very specific you are probably on your own (although of course I am willing to give some advice).

This project sounds good! Can I help?
Depends on your skills, competences and time. If you have hardware skills you could probably come up with a prototype for an expansion board, instead of the hodge-podge of USB devices that I am undoubtedly going to make. If you have mechanical skills you could come up with a casing proposal (otherwise it'll probably be a shoe box project). If you are graphically skilled you could help defining the UI (I am graphically challenged :-) ). And if you are a programmer you could port and test some of the packages mentioned above.

Unanswered questions, suggestions, remarks etc
If you have other questions, suggestions, remarks etc. feel free to add them below. I'll try to come up with answers.