UPnP/Developer notes

From Official Kodi Wiki
Jump to: navigation, search
Home icon grey.png   ▶ Development
▶ UPnP
▶ Developer notes
Cleanup.png This page or section may require cleanup, updating, spellchecking, reformatting and/or updated images. Please improve this page if you can. The discussion page may contain suggestions.

UPnP (Universal Plug and Play) is a set of royalty-free computer network protocols from the UPnP Forum. UPnP is built upon open, internet-based communication standards such as SSDP, HTTP, XML, SOAP, etc. (which means that any developer/programmer can make a device or software for any operating-system/platform in any program-language by following the UPnP standards and it should automaticly be compatible with all other UPnP devices). UPnP achieves this by defining and publishing UPnP device control protocols (also called profiles). One profile called UPnP Gateway is what routers implements to let computers automatically discover them or even control them by opening/closing ports on a firewall for example. Another profile which is not to be confused with the previous one is UPnP AV (for audio/video) which defines a set of functionalities to share/control and render content on a local-network. There are typically three types of devices in UPnP AV (Audio/Video); a MediaServer which is a 'slave' device which sole purpose is to share content, a MediaRenderer which is a 'slave' device that can render content, and a UPnP MediaServer ControlPoint which is the 'master' that can detect/find UPnP MediaServers and control them (browse). UPnP MediaServers ControlPoint is not an actual UPnP device as it cannot be detected by other UPnP devices. A UPnP MediaRenderer ControlPoint is the 'master' that can detect/find and control UPnP MediaRenderers. A DMP (Digital Media Player) like Kodi typically only implements a UPnP MediaServer ControlPoint.

If you are a C/C++ programmer and like to make a UPnP MediaServer (or if you wish to add new UPnP features to XBMC) then we recommend you checkout the Platinum UPnP SDK, available on SourceForge.net. Platinum UPnP SDK is a free and open source software development kit that lets you easily create a UPnP MediaServer, MediaRenderer or Contol Point, it also happens to be that it is from this SDK that Kodi got its UPnP client and server code from, (XBMC's UPnP MediaServer Control Point and MediaServer code was also firstly implemented into Kodi by the author of the Platinum UPnP SDK, Sylvain a.k.a. c0diq). You should also visit the official UPnP™ Forum and read the published white-papers on UPnP. Other good links for developers can be found at the bottom of the UPnP article on Wikipedia, an article which also will give you a good overview about what UPnP is about.

The UPnP™ Forum is promoting UPnP as the future of networked entertainment and are leading the way to an interconnected lifestyle. The UPnP™ Forum currently consists of over 800 members (consisting of vendors, industry leaders in consumer electronics, computing, home automation, home security, appliances, printing, photography, computer networking, and mobile products), including international companies such as; Microsoft, Intel, AMD, Adobe, Belkin, Cisco, LinkSys, D-Link, 3com, Fujitsu, IBM, NEC, RealNetworks, ReplayTV, ...and many, many more huge coperations. Membership of the UPnP™ Forum is free, and using/implemeting UPnP technology is royalty-free.

Much information about UPnP compatibility can be found on the Digital Living Network Alliance (DLNA) website. DLNA is a specification that allows the sharing of music, photo, and video files over the home network, between different consumer electronics and PC products.. The DLNA promotion group are like the UPnP™ Forum made from consists of vendors, industry leaders in consumer electronics, etc. Their goal make sure different UPnP devices work together without problems or complications, they feature a "DLNA CERTIFIED™" certificate for products that have passed their interoperability testing standards, which includes guidelines that should be followed when making a UPnP device. Membership of DLNA is also free.

PS! Feature request to any willing developers out there; if "UPnP Remote User Interface (UPnP RUI) Client" support could be added in XBMC, then Kodi could control UPnP MediaServers which also has a "UPnP Remote User Interface Server" such as HTPC applications like SnapStream BeyondTV (and possible MediaPortal in the future) and other PVR softwares/devices supports , (to control functions and commands such as record, schedule, play, pay, stop, fast-forward, etc.)

DLNA compliance in Kodi

DLNA certificate guidelines are governed by the Digital Living Network Alliance. Since September 2007 XBMC's built-in UPnP-server and UPnP-client are compatible with DLNA CERTIFIED™ devices.

There are two classes of DLNA CERTIFIED™ devices:

  • Digital Media Servers (DMS) record and/or store media content, then share it on the network. (Sharing is sometimes limited by content protection rules.) Some examples of DMS products are advanced set-top boxes, digital video recorders, PCs/laptops, music servers with hard disk drives, broadcast tuners, video and imaging capture devices such as cameras and camcorders, and multimedia mobile phones.
  • Digital Media Players (DMP) can find and play/display the content that is shared by DMS devices. Some examples of DMP products are digital TV monitors, stereo systems, home theaters, printers, personal digital assistants, multimedia mobile phones, wireless monitors and game consoles.

The DLNA guidelines are very flexible. Some devices offer rich user interfaces and some do not. With some server devices you can also manage your media collection or manage other devices on the network. Some devices can be both a player and server device, e.g. a computer running Kodi can play files from another server and share the computer's own local files to other players.