One of the most exciting ideas put forth at this year’s devcon was a concept called the XBMC Mesh. It was a natural extension of Alcoheca’s GSoC project and is slated as a potential feature for the version of XBMC that comes after Frodo.*

*Somebody seriously needs to come up with a good ‘G’ name.

Today, we have software that works like XBMC, where there’s a database and a player all built together in one piece of software. We also have software like Plex, where the database has been pulled out and acts as a central server, and each instance of player software acts as a mindless drone being controlled by the all powerful server.

But what if there was a third way? What if a system were developed where each software instance was intelligent and could communicate with other software instances? For example, you set up XBMC for the first time on your tablet, then when you are done, you receive an Android set-top box in the mail with XBMC pre-installed; you plug that box in, and it announces itself on the network.

Mesh systems are pretty awesome.

Your XBMC tablet sees there is a new instance of XBMC on the network and asks you, “Would you like to add the set-top box to the mesh?” When you say yes, your XBMC tablet tells your XBMC set-top box where all of your shows/movies/pictures/music are and what addons you have installed. Rather than relying upon the tablet or other server for this information, the XBMC set-top learns where everything is located itself, so that it can always find it if the tablet has been turned off or taken out of the house.

Now, because these devices can intelligently communicate with one another, every single one of them can act as a remote control for one or all of the others. Your tablet can watch a show or tell your set-top to watch a show (along with play, pause, fast forward, record, etc.). You could theoretically start a whole-home audio session. You could, naturally, start watching a show in the living room, continue the show on your tablet in the bathroom, and finish the show in your bedroom.

And the crazy thing about this network is that it would be incredibly easy to set up. You tell one device where your content is, and all the rest of the devices know. You turn on your set-top for the first time, it sees the network, and it asks if you want to join. Heck, each device could even be smart enough* that if you, for example, took your tablet to your sister’s house, it could ask if you’d like to switch networks and keep a memory of multiple meshes.

*Eventually, of course, it would become so intelligent that it would decide to destroy all humans. Hopefully that won’t happen until we finally find out who the mother is on How I Met Your Mother.

An important aspect of this mesh system would be in playing nice with devices that exist outside the mesh. For example, the set-top box would likely need to interact with IR remotes and communicate with the CEC of your TV/receiver. Naturally, each device (particularly, each non-mobile device) would need to act as a uPnP server (given that most of the communication would be done via JSON and extended uPnP in the mesh in the first, this should be quite natural) for legacy devices that can only act as DLNA/uPnP clients. Given the cost-effectiveness of ARM hardware and (thanks to Sigma Designs) now MIPS hardware, it would arguably even be possible to set up an inexpensive router with headless XBMC software that not only acted as a mesh base, but also behaved like a simple router for the home network.

Of course, there are some challenges that would need to be ironed out with this idea. Would you still have to share your local content over something like SMB, or would you install XBMC on your local content server(s) and make it(them) act as uPnP servers for the mesh? Would it be better for there to be a shared database that each software instance latched onto while it was in the network, or would it be better for each instance to write to its own database? Or could you do both, so that the library immediately appears on your device via the shared database, but a redundant local database is written in the background while your CPU is idle or you are watching a movie or something? How would you deal with new binary addons like PVR backend addons that are entirely separate programs?  Would each device have to install the binary addon to be able to make use of it, or could you stream from the XBMC instance that has the PVR addon installed and simply communicate with that server via JSON? In fact, would it be possible to abstract out nearly everything to do with XBMC and connect it all together into this mesh, so that, in addition to the normal library, addon settings and other personalized aspects could be shared along the mesh.

Needless to say, something as massive as this idea isn’t going to happen over night. It might not happen at all. To put an idea as huge as this together would take a lot of smart people and a lot of man-hours. But my God, would it be awesome.


  • http://twitter.com/Oddsodz Oddsodz

    G name = 
    Gannicus

  • Brian sturrock

    gilgamesh

  • Brian sturrock

    but would it be smart enough to delete any copies of ace ventura 2?

    • NathanBetzen

      We are clearly old people. Also, Ace Ventura 2 was he he helarious.

  • Anon

    G = Gargamel

  • Naturellement Troublant

    Gilgamesh is an awesome codename for it !!
    +1 Brian !!

  • RpR

    Plex method is still better. Mesh makes it complicated and debugging will be hell :(

  • No

    Gilmore

  • Georgiaboy61

    ‘Gandalf’, perhaps?

  • Monish Mhatre

    G = Gandalf
    the version arrives precisely when it means to

    • Handaloo

      I second that. 

  • Unimpressed

    Huh. Sounds like you are only a year or so behind Plex. Congrats!

    • NathanBetzen

      Wow. Plex does a mesh network? That’s amazing! Especially given the fact that they didn’t about 10 minutes before the post was published. They must have done a heck of a lot of work in that 10 minutes!

    • Grey

      Yes, but this one would actually work.

  • http://twitter.com/Quickdrawmods QuickDrawMods

     This actually would not that hard to do.  Once you set up the first XMBC, you could have a config file that keeps track of everything in your current configuration.  That file would be saved and you could enable it in the settings as auto load or manual load, that way if you put other XBMC boxs/devices on the same network upon it’s first boot it would look for any other XBMC out there on the network and if the First one is set to AUTO then it would take all the settings from the config and duplicate them for it’s own.  Or you could do it manually with it having a setting to find all Configs on the network, choose the config of the box who’s config you want and import and done.

    Also would be kind of cool if you could set up a passworded external discovery, that way people could set up one of their XBMC players that has all the network info to share externally. That way instead of sending that MP3 through email or that photo through email to a friend, you could just give your friend the IP of your main XBMC device, which would act as the mediator, and your friends XBMC device would connect to your device (with permission) and the shared content you have setup is all they could see.  He could then browse the shared content and play back or stream what he/she wanted and since the file technically is not copied just streamed to and gone when it is over or pressed stop it would be a nice way to share content and not really rile up those riaa or mpaa guys – although they probably would still have something to say (how dare anyone share their paid for media with anyone)  But Copy-written content aside, streaming home movies or pictures or even music from one home network to another through XMBC private networking mesh.

    As for plugins. The plugins that you need shared/installed on other devices would be in the CONFIG, if your config shows that plug in stalled when you auto import or manual import the config from the box you want to copy, it would auto download and install the plugin pretty simple.  All settings would be carried over so you wouldn’t have to do double duty on two XMBC machines and the machine in use would handle to content from the plugin natively.

  • http://www.facebook.com/tjvance TJ Vance

    I use a centralized mysql server for the database, and push two config files to every new xbmc device.  Have it on 3 laptops, 2 desktops, 2 set top boxes, and 2 tablets.  Works like a charm.

  • Ashe

    Having mysql and the ability to share databases as a standard feature would be a great start

  • George

    Gollum.

  • Sean56321

    Gilligan
    Ganges
    Galadriel or Gimli (if you wish to stick with LOTR)
    Ganesh
    Grant

  • John Kristian

    I use xbmc in a vpn, and there is quite some optimalisation to be done here. We got a very fast vpn, but xbmc isn’t coping very well (reading wan sources)

  • Grey

    Great news. Not sure I would actally make use of mesh system, but centralized media and library is very much needed. It might be useful to use mesh between 2 headless systems maybe.

  • Localhorst86

    Genesis
    Gallipoli
    Gravity
    Gonorrhea

    • Skye

      Gonorrhea please… “Hey, I’m just gonna come over and give you Gonorrhea.”  Also, with the mesh, it should seek out new computers and install itself.

      • Localhorst86

        as you might or might not have guessed, gonorrhea was more of a joke :-)

  • http://www.facebook.com/marijn.sijbers Marijn Sijbers

    G-spot

    • NathanBetzen

      Truly a mythical place.

    • Mark Pop006

      But then no man could ever find it?

  • Daniel

    Goa’uld?

  • Matthew Walsh

    Gangnam!!

  • Fire69

    [quote]
    Needless to say, something as massive as this idea isn’t going to happen over night. It might not happen at all. To put an idea as huge as this together would take a lot of smart people and a lot of man-hours. But my God, would it be awesome.
    [/]

    Please don’t pitch us this idea, and then tell us it might not happen at all!!!! :-P

    This would be so awesome!  For the moment, managing my 10+ xbmc’s can be a hassle sometimes :-D

  • Guest

    G = Gin, because you would need some of them to get this work…

  • M_Auer1

    In the old habit of having mythical city names, my vote is GOTHAM!
    BTW: Nice article, Nate!

    mad-max

  • Andre Gil da Costa

    Why not just Gandalf ? Or Grommit. Gonzo? Guile? 

  • https://profiles.google.com/102850993630030913069 Marc

    Gotcha.. get it?

  • http://www.hackourlife.com/ Abhishek

     I have been dreaming of this for ever…. :) Good to know that I am not alone….

  • Abhishek

    G for Garuda

  • http://twitter.com/Mattchewey Matt Lucas

    I like this as an outcome of the devcon.  An idea of the future and direction of XBMC.  The above scenario sounds incredible, and I feel it would expand the userbase by increasing usablilty.  Great Work Nate and dev’s.  It is appreciated. 

  • Crunch

    G = girugamesh! mesh as in mesh network

  • Smashmouse

    Sounds a bit like how sonos works. To be a true mesh, it would need to be independent of network router. Could add drivers to xbmc and use Zigbee wireless chips to create mesh.

  • Jason

    Isn’t this just what uPnP and DLNA do already? If XMBC can act as a Server, Controller and Renderer doesn’t this meet the objectives? What am I missing?

    • NathanBetzen

      Most of the work already done along these lines for Google Summer of Code were to extend uPnP so that it actually COULD do things like this. At the moment, it’s unfortunately limited. 

      When the entire project is done, with luck not only XBMC but also the entire uPnP effort will be better for the work done.

  • Carl Menezes

    Oooh ooh ooh! Then I could buy XBMC Mesh certified speakers and televisions and using my tablet (or my phone), I could have the picture (and sound) follow me as I walk from room to room. Heck, it could even pause when I take a call in the lounge and resume in the kitchen because the call made me hungry :)

  • Enki

    Gilgamesh +1

  • Rocker

    Any more news on MIPS hardware for XBMC from Sigma Designs and their OEM partners?

    When will the MIPS code for it be merged into the mainline XBMC for us to use it?

  • Rocker

    XBMC headless backend needs a great web interface too to manage media server shares and more!

  • Chicago

    G- Ginger

  • Chicago

    Guys love the mesh (G-Mesh) idea. Hopefully we get to see it in G (Ginger)!

  • Emmanuel Reynoso

    I know it sounds stupid, but this souns like something like Windows 7 homegroups done right

  • Mmm

    I though we agreed to name it girls.

  • PatK

    I’ll not be satisfied until TPB is part of the mesh and a torrent queue is started. 

  • Derek D Anderson

    G = Gygax

  • Johan Lind

    G= Guinevere

  • Dang Ren Bo

    This is a great idea, but I would settle for pulling out the XBMC backend and making the front-end smart enough to auto-add via uPnP.

    No matter how it turns out, the databases need to sync in some way. There are many possibilities.

    Best of luck on it!

  • Grumpee

    This sounds amazing, even better then I have imagined with a centralised server. With a headless version on my NAS would be perfect.

    For those saying Plex does this please… really?!

  • PalleO

    Gizmo