{"id":108,"date":"2009-04-21T00:01:19","date_gmt":"2009-04-21T08:01:19","guid":{"rendered":"http:\/\/www.pagetable.com\/?p=108"},"modified":"2009-04-21T00:01:19","modified_gmt":"2009-04-21T08:01:19","slug":"lodgenet-reverse-engineering","status":"publish","type":"post","link":"https:\/\/www.pagetable.com\/?p=108","title":{"rendered":"LodgeNet Reverse Engineering"},"content":{"rendered":"<p>Many hotels (at least in the USA) equip their room TVs with a &#8220;LodgeNet&#8221; entertainment system. The TV will show regular free television channels, but also have an interactive channel controlled by the remote that features video on demand and video games.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/setup.jpg\" border=\"1\"><br \/>The setup consists of a regular TV, a set-top-box and a Nintendo 64 controller.<\/p>\n<p>If you play with the system a bit, it&#8217;s be quite easy to reverse engineer the architecture:<\/p>\n<p><a href=\"docs\/lodgenet\/lodgenet.png\"><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/lodgenet.png\" border=\"1\"><\/a><\/p>\n<p>All TVs in the hotel are connected to the same internal TV cable. The cable carries one channel per room, and the TV is locked to that channel. This gives the TV a point-to-point channel to a multiplexer in the server room.<\/p>\n<p>This analog multiplexer has the free-to-air channels as inputs as well as &#8220;channel 00&#8221;, which is the entertainment system. Another multiplexer switches channel 00 between the &#8220;welcome&#8221; screen and one of the servers. It is the servers that provide the image as soon as the user browses through the menu or selects video on demand or a game.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"440\" src=\"docs\/lodgenet\/remote.jpg\" border=\"1\"><br \/>The remote is custom. The volume buttons will control the TV directly, and all other buttons are sent to the set-top-box.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/controller.jpg\" border=\"1\"><br \/>The Nintendo 64 controller has extra buttons and a custom (RJ) connector.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/set_top_box.jpg\" border=\"1\"><br \/>The set-top-box has an IR receiver at the front, and sits on the cable between the multiplexer in the server room and the TV (&#8220;CABLE IN&#8221;, &#8220;TV&#8221;), in order to be able to send the commands from the remote. &#8220;DATA&#8221; connects to the Nintendo 64 controller. It is unknown what &#8220;IR&#8221; and &#8220;MTI&#8221; would be for.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"165\" src=\"docs\/lodgenet\/ch00.jpg\" border=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"165\" src=\"docs\/lodgenet\/ch2.jpg\" border=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"165\" src=\"docs\/lodgenet\/ch3.jpg\" border=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"165\" src=\"docs\/lodgenet\/ch36.jpg\" border=\"1\"><br \/>If you switch channels, the set-top-box tunnels the command to the multiplexer. The on-screen-display is generated by the multiplexer. Channel &#8220;00&#8221; is the entertainment system, which by default is connected to the &#8220;welcome&#8221; channel, a series of static screens that are hotel-global.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/volume.jpg\" border=\"1\"><br \/>The volume button on the remote targets the TV directly. You can tell that the on-screen-display is generated by the TV and not the multiplexer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/channel_fixed.jpg\" border=\"1\"><br \/>Switching channels with the buttons on the TV itself does not succeed. Otherwise you could watch your neighbor&#8217;s channel.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/please_wait.jpg\" border=\"1\"><br \/>If you press the MENU key, the second-level multiplexer will switch you away from the global &#8220;welcome&#8221; channel and connect you to one of the servers. Since most hotel guests do not use the entertainment system most of the time, the number of servers is only a fraction of the number of rooms. While the multiplexer is finding a free server, it displays a &#8220;Please Wait&#8221; picture for about a second.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"440\" height=\"330\" src=\"docs\/lodgenet\/main_menu.jpg\" border=\"1\"><br \/>The user is connected to the server that is now dedicated to his TV. Key presses on the remote (except volume and channel) will be sent to the server.<\/p>\n<p>A very obvious attack on the system would be to connect the cable to a TV receiver that allows switching channels.<\/p>\n<p>Does anyone know more about this system? How are the games done &#8211; emulation or dedicated N64 hardware? Are the movies streamed from disk? Is there a dedicated storage server? How is the system updated with new movies? What operating system are the servers running?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many hotels (at least in the USA) equip their room TVs with a &#8220;LodgeNet&#8221; entertainment system. The TV will show regular free television channels, but also have an interactive channel controlled by the remote that features video on demand and video games. The setup consists of a regular TV, a set-top-box and a Nintendo 64 &#8230; <a title=\"LodgeNet Reverse Engineering\" class=\"read-more\" href=\"https:\/\/www.pagetable.com\/?p=108\" aria-label=\"Read more about LodgeNet Reverse Engineering\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-108","post","type-post","status-publish","format-standard","hentry","category-hacks"],"_links":{"self":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=108"}],"version-history":[{"count":0,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}