Tutorial / Howto / How-To ...

article en cours de rédaction

Dans cette page, j’ai mis mes notes sur les tests UPnP que je suis en train de réaliser. Les logiciels testés sont de préférence sous GNU/Linux :) Pour avoir plus d’informations concernant l’installatino de ces logiciels, vous pouvez voir mon article précédent : Partager des contenus avec UPnP.

J’utilise les logiciels suivants sur mon réseau (en attendant de vrais périphériques UPnP :) :

  • uShare (UPnP Server)
  • gmediaserver (UPnP Server)
  • mediatomb (UPnP Server)
  • djmount (UPnP Client)
  • gmediarender (UPnP Renderer ou Client)
  • cidero (UPnP Controller)

Description de la configuration

Le répertoire /home/petrus/share est partagé en UPnP ; il contient 3 sous-répertoires : audios, pictures, videos.


$ tree /home/petrus/share
/home/petrus/share
|-- audios
|   |-- Brother John
|   |   |-- JunkyFazz.mp3
|   |   |-- album1
|   |   |   |-- GodMakeMeDubby.mp3
|   |   |   `-- OrganDonuts.mp3
|   |   `-- album2
|   |       |-- SergeEnPetitsMorceaux.mp3
|   |       `-- tenderness.mp3
|   `-- recursive_test
|       `-- Brother John -> ../Brother John
|-- pictures
|   |-- covers
|   |   |-- da_vinci_code_poster.jpg
|   |   |-- kingkong_200510112253.jpg
|   |   |-- supermanreturns_200512081503.jpg
|   |   |-- vforvendetta_200512151209.jpg
|   |   `-- x3_200512051032.jpg
|   `-- wallpapers
`-- videos
   `-- trailers
       |-- da_vinci_code-tsr2_h480p.mov
       |-- king_kong_h480p.mov
       `-- x-men_3-pre_teaser_h480p.mov

Utilisation de djmount


$ djmount /mnt/upnp
$ ls /mnt/upnp
debug/  devices  GMediaRender/  gmediaserver/  MediaTomb/  test/  ushare/

$ tree /mnt/upnp/ushare
/mnt/upnp/ushare
|-- browse
|   `-- share
|       |-- audios
|       |   |-- Brother John
|       |   |   |-- JunkyFazz.mp3
|       |   |   |-- JunkyFazz.xml
|       |   |   |-- album1
|       |   |   |   |-- GodMakeMeDubby.mp3
|       |   |   |   |-- GodMakeMeDubby.xml
|       |   |   |   |-- OrganDonuts.mp3
|       |   |   |   `-- OrganDonuts.xml
|       |   |   `-- album2
|       |   |       |-- SergeEnPetitsMorceaux.mp3
|       |   |       |-- SergeEnPetitsMorceaux.xml
|       |   |       |-- tenderness.mp3
|       |   |       `-- tenderness.xml
|       |   `-- recursive_test
|       |       `-- Brother John
|       |           |-- JunkyFazz.mp3
|       |           |-- JunkyFazz.xml
|       |           |-- album1
|       |           |   |-- GodMakeMeDubby.mp3
|       |           |   |-- GodMakeMeDubby.xml
|       |           |   |-- OrganDonuts.mp3
|       |           |   `-- OrganDonuts.xml
|       |           `-- album2
|       |               |-- SergeEnPetitsMorceaux.mp3
|       |               |-- SergeEnPetitsMorceaux.xml
|       |               |-- tenderness.mp3
|       |               `-- tenderness.xml
|       |-- pictures
|       |   |-- covers
|       |   |   |-- da_vinci_code_poster.jpg
|       |   |   |-- da_vinci_code_poster.xml
|       |   |   |-- kingkong_200510112253.jpg
|       |   |   |-- kingkong_200510112253.xml
|       |   |   |-- supermanreturns_200512081503.jpg
|       |   |   |-- supermanreturns_200512081503.xml
|       |   |   |-- vforvendetta_200512151209.jpg
|       |   |   |-- vforvendetta_200512151209.xml
|       |   |   |-- x3_200512051032.jpg
|       |   |   `-- x3_200512051032.xml
|       |   `-- wallpapers
|       `-- videos
|           `-- trailers
|               |-- da_vinci_code-tsr2_h480p.mov
|               |-- da_vinci_code-tsr2_h480p.xml
|               |-- king_kong_h480p.mov
|               |-- king_kong_h480p.xml
|               |-- x-men_3-pre_teaser_h480p.mov
|               `-- x-men_3-pre_teaser_h480p.xml
`-- status

Utilisation de test_upnp

La commande test_upnp est fournie avec djmount ; elle permet de lancer quelques commandes UPnP :


$ test_upnp
[...]
>> help
Valid Commands:
 help          
 loglevel       <max log level (0-3)>
 leak          
 leakfull      
 listdev        
 refresh        
 printdev       <devname>
 browse         <devname> <objectId>
 metadata       <devname> <objectId>
 ls             <devname> <path>
 action         <devname> <serviceId> <actionName>
 exit          

>> listdev
DeviceList:
gmediaserver         -- uuid:5177fca0-c42d-11d8-9669-0800200c9a66
GMediaRender         -- uuid:GMediaRender-1_0-000-000-002
ushare               -- uuid:00:11:2F:C7:56:0E
MediaTomb            -- uuid:65a0aae2-80ef-40eb-b15c-4eb34ecd5bb9

>> printdev ushare
Device "ushare" (expires in 1770 seconds)
 |
 +- Discovered on  = Sat Dec 24 03:20:27 2005 (51 seconds ago)
 +- UDN            = uuid:00:11:2F:C7:56:0E
 +- DeviceType     = urn:schemas-upnp-org:device:MediaServer:1
 +- DescDocURL     = http://10.0.0.4:49152/description.xml
 +- FriendlyName   = ushare
 +- PresURL        = http://10.0.0.4:49152/web/ushare.html
 +- talloc memory  = 20 blocks / 17270 bytes
 |
 +- Service
 |   |
 |   +- Class           = Service
 |   +- Object Name     = Service
 |   +- ServiceId       = urn:upnp-org:serviceId:ConnectionManager
 |   +- ServiceType     = urn:schemas-upnp-org:service:ConnectionManager:1
 |   +- EventURL        = http://10.0.0.4:49152/web/cms_event
 |   +- ControlURL      = http://10.0.0.4:49152/web/cms_control
 |   +- ServiceStateTable
 |   +- Last Action     = (null)
 |   +- SID             = uuid:d934a63c-1dd1-11b2-9c97-9c58ff6c7302
 |
 +- Service
     |
     +- Class           = ContentDir
     +- Object Name     = ContentDir
     +- ServiceId       = urn:upnp-org:serviceId:ContentDirectory
     +- ServiceType     = urn:schemas-upnp-org:service:ContentDirectory:1
     +- EventURL        = http://10.0.0.4:49152/web/cds_event
     +- ControlURL      = http://10.0.0.4:49152/web/cds_control
     +- ServiceStateTable
     +- Last Action     = (null)
     +- SID             = uuid:d934ef34-1dd1-11b2-9c97-9c58ff6c7302
     +- Cache size      = 1024
     +- Cached entries  = 0 (0%)
     +- Cache timeout   = 60 seconds
     +- Cache access    = 0

>> browse ushare 0
 share
>> browse ushare 1
 audios
 pictures
 videos
>> browse ushare 2
 Brother John
 recursive_test
>> ls ushare /share/
ls '/share/' :
 audios
 pictures
 videos
-> path left to match : '/'

Utilisation du module CPAN Net ::UPnP

Pour lister mes périphériques UPnP, j’ai écrit un script perl upnp-controller.pl utilisant la librairie CPAN Net ::UPnP disponible sur le site de cybergarage. Il est en cours de développement. Pour le moment, il liste tous les périphériques UPnP et affiche automatiquement les partages des périphériques UPnP A/V. Je suis en train d’écrire une version en Gtk2 pour que ce soit plus joli :o)

Utilisation de cidero