Pushing a HTTP Stream To Roku

18 Sep 2016 23:11

After a bit of traffic capturing, I managed to find out how to make Roku play an HTTP stream by URL.

It seems a Roku device (Roku TV in my case) hosts an HTTP server which is exposed on port 8060.

There's a series of MDNS requests to determine the available player in the network, but we can skip that since I assume you know the IP address of your Roku. After the device (a phone in my case) identified the target player, it sends an HTTP request:

GET http://your-roku-address:8060/query/device-info

You get a nice XML document in return that lists some properties like this:

   <model-name>Hisense 40H4</model-name>

You can see for example my device is Hisense 40H4 and it's a secure device.

This is interesting, but this doesn't cause anything to play.

Here's the part that gets Roku to play something:

POST http://your-roku-address:8060/input/15985?t=v&u=http%3A%2F%2F192.168.1.108%3A8000%2Fstream.m3u8&k=(null)&videoName=

That's it, you pass the m3u8 URI as u param (need to URL encode it first) and Roku starts playing it. Note the HTTP method used in POST, but the payload is empty.

I'm not sure what's the meaning of 15985 in the URL, maybe it's the ID of the PlayOnRoku video source.

Comments: 3

My Computer Setup: Hardware

22 Jun 2016 01:40

I believe you should use the tools that suit you. As a software developer, my computer is my toolbox. And I wanted to share what it is.

While writing this post I realized how much I want not only to list my setup but also explain what are the reasons for each element of it.

This makes it not suitable for one post. That's why it's going to be a few separate blog posts on each of the parts.

Today we start with…


My current computer is a one supplied by my company — Wikia. It's Dell Latitude E6430s. Previously I also used an older version of Dell Latitude, both are very similar-looking and built around the same platform.


(My previous laptop)


(My current one)


The computer is based on Intel hardware: Intel CPU, Intel Ethernet and Wi-Fi cards, Intel graphics. The hardware is very nicely supported by Linux, which will be covered in the next post.

Docking station

I'm a big fan of docking stations: you just put your laptop on it and you don't need to play with any cables whatsoever. The laptop gets power from it and you can connect a few devices through it all by placing the laptop in the correct spot.


I used to have two external screens, but now I only have one — a bigger one, though. The main difference between my old and new laptop from my standpoint was the number of simultaneously supported screens. Previously the graphic adapter could only support 2, the new model supports 3.

With the old model, it was very tricky to script the computer in a way that would switch from displaying the contents just on the laptop to displaying it on two external screens. You needed to do that in stages: first, activate one external screen, then disable the laptop screen, and finally activate the other screen. I did finally craft the script that worked, that it required some time.

With the new model, the regular tools for screen management (based on XRandr) works flawlessly whether you want to use internal, internal + 1 external, 2 external or internal + 2 external screens and whatever the transitions you want, it'll just work.


When I joined Wikia, my first project was rewriting the ad engine. That required a lot of coding and my hands started to be in pain. I asked for an ergonomic keyboard and got one. The keyboard I used was a Microsoft Natural 4000. I'm not an expert on keyboards, but I must say my pain was gone and I never wanted to type on a non-ergonomic keyboard again.


When I moved to the States, my keyboard was left in Poland, so I asked for another ergonomic keyboard and got a Microsoft keyboard again. This time, it was a different model: Microsoft L5V-00001. The keyboard took some time to get used to, but as before my hands don't hurt.


I want to say one thing here: I don't think ergonomic keyboard (or mouse for that matter) makes you type faster — your body can adjust to using almost any sensible tool at comparable speeds — but it does help you type without pain. As I spend a good part of the day typing, this is important.


As for the mouse, almost anything goes, I used wired, Bluetooth and proprietary-wireless-USB mouses. Also the laptop touchpads. Dells are equipped with track point devices. I don't like using them. I like the fact you get a dedicated middle button with it, I use it way more often that most of the people.

One thing that I absolutely need my mouse-like device to give me is a sane scroll and the middle button I mentioned before. My Bluetooth mouse has the scroll broken — when scrolling down, it sometimes scrolls up — and this is very very annoying for me.

Summing up: I don't use the mouse that often, mostly to scroll content, so give me anything that allows me to scroll, and I'm happy.


The laptop has a removable big capacity battery, SD card reader, USB3, and eSATA. It features an extension bay which by default is occupied by a DVD-writer. I have a 500GB placed in there with the original Windows installation moved to it, so I can both boot to it and start it in VirtualBox.

The very annoying part of the laptop is the HDMI output, which is realized through a mini-HDMI port. The port is not very solid and after using it just a few times it stopped working (mechanically, it was later replaced by Dell support). You also need the adapter which you normally don't carry on you.

Seating arrangement

Again, because I spent a good part of the day working on a computer it is important for me to seat in a position that my body can handle. There are some resources online to help you arrange your seat, your desk, your keyboard and your screen in a way that is optimal, so I'm not going to go through that, but here's what I needed to do:

  • As the desks in the office don't offer height alignment I ordered a monitor stand and I'm having my keyboard sit on top of it. This makes up for the fact my desk is too low for me. I keep my mouse on it too. There's no place for my num pad, but that's OK.
  • With my keyboard already risen, you can expect my screen needs to be placed high as well. Even with quite wide height-alignment range of the screen, it's not enough, I placed the screen on a bunch of Amazon boxes.
  • What works one day, doesn't work on the other. Every few days I adjust the screen and the seat to be higher or lower just a tad, just to change the position a little bit and to not cause any Repetitive Strain Injuries (well, not really, but I guess you know what I mean).

Home setup

Whenever I'm not at work and I use my laptop, I use it completely bare: no external screen, no ergonomic keyboard, no optimized seating position, usually no AC cord. The battery, when fully charged, allows for anywhere between 3 and 6 hours of work/play and that's more than enough I need to use my computer outside the office.

Next time

The next posts will be dedicated to the operating system.

Comments: 1

Goodbye Pieter

22 Apr 2016 18:44

Pieter Hintjens says goodbye: http://hintjens.com/blog:115

Comments: 0

Głupia Nawigacja w Mazdzie 6

13 Feb 2016 21:14

Gdy kupowaliśmy naszą Mazdę, pracownik dilera nie mógł przestać zachwalać systemu "infotainmentu", który Mazda posiada. W mojej ocenie system jest w porządku, ale szału nie robi.

Ogólnie moja opinia na temat samochodów i ich ekranów multimedialnych, jest taka, że dla wszystkich byłoby dużo lepiej, gdyby producenci samochodów przestali się tym w ogóle zajmować, tylko dali jakąś dobrą integrację z tabletem, który można byłoby sobie wsadzić w odpowiedni slot w samochodzie.

Ale do rzeczy. Dlaczego system w aucie, który kupiliśmy jest według mnie taki słaby?

Po pierwsze sposób w jaki startuje. Nawigacja i reszta bajerów (radio, odtwarzacz MP3 itd) uruchamia się dopiero po "przekręceniu kluczyka". Uruchomienie systemu trwa około minutę, więc nici z szybkiego ustawienia nawigacji czy wyboru stacji przed ruszeniem w podróż.

System mógłby już zacząć się uruchamiać gdy otwieramy drzwi a nawet gdy kluczyk zbliża się do auta (mamy czujnik bliskości), wtedy długi czas uruchamiania systemu (o ile nie można go sensownie skrócić) nie byłby taki straszny, bo proces miałby miejsce zanim wsiądziemy do auta.

Po drugie brak możliwości sterowania nawigacją w czasie jazdy. Gdy przekraczamy około 5 mil na godzinę nawigacja przechodzi w tryb ograniczonego sterowania: niemożliwe jest wpisywanie adresu czy nazwy pożądanego punktu, a jeśli nazwę już wpisaliśmy w czasie, gdy auto się toczyło: niemożliwe jest zatwierdzenie wpisanej nazwy.

Są dostępne tylko niektóre opcje, wybrane chyba zupełnie losowo, bo o logice ciężko w tej sytuacji rozmawiać. Auto nie jest zainteresowane kto obsługuje nawigację. Niezależnie od tego, czy następny punkt podróży chce wpisać kierowca czy pasażer "z powodów bezpieczeństwa" jest to niemożliwe.

W sytuacji gdy jedziemy autostradą i w wyniku zmiany planów (np. ktoś się źle poczuł i należy podjechać po drodze do apteki) należy zatrzymać auto (albo zwolnić do około 5 mph) i dopiero wtedy możliwe jest ustawienie następnego punktu podróży.

Jeśli w Mazdzie nazywa się to bezpieczeństwem (zatrzymywanie auta na autostradzie), to jest po prostu głupia (tak jak i ich nawigacja).

Po konsultacji na forum Mazdy6 w Polsce dowiedziałem się, że zabezpieczenie, o którym piszę wcale nie występuje w Polskich samochodach. Bardzo mnie to zdziwiło, bo jeżeli to kwestia bezpieczeństwa, to chyba powinno to działać tak samo we wszystkich krajach? Dla dociekliwych, to też nie kwestia regulacji prawnych w stanach, bo inne marki samochodów nie utrudniają w ten sposób życia swoim kierowcom.

Jak zwykle w takich sytuacjach zwróciłem się do Mazdy z pytaniem jak to naprawić.

Niestety nie mam zapisanego mojego pytania, ale dotyczyło ono dlaczego niemożliwe jest w aucie sterowanie nawigacją (nawet przez pasażera) w czasie jazdy. Oto odpowiedź:

Dear Piotr Gabryjeluk,

Good Morning

Apologies that you are unhappy with our navigation system , to answer your question about operating the navigation while the vehicle is in motion , for safety precautions it could be a distraction to operate while in the vehicle is in motion. For the other issues with the navigation if it is not working as normal I suggest taking the vehicle into a local Mazda dealer to inspect your concern.

Thank you for contacting Mazda Customer Experience Center.

If you have any questions in the future, you can reach me directly using the number and extension below.



Representative, Customer Experience

Nie można takiej odpowiedzi pozostawić bez odzewu, więc zadałem kolejne pytanie w nawiązaniu do tej odpowiedzi:

Dear William,

Could you please tell me how exactly operating the navigation system by a passenger is a distraction?

Thank you very much,
Piotr Gabryjeluk

Po ośmiu dniach nie dostałem żadnej odpowiedzi, więc zapytałem:

Hi there,

Am I going to get the response from William?

My issue is definitely NOT SOLVED!

Piotr Gabryjeluk


Dear Piotr Gabryjeluk,

Good Morning Apologies but it looks like I did supply the answer for you in regards why your not able to use the navigation while vehicle is in motion.

Thank you for contacting Mazda Customer Experience Center.

If you have any questions in the future, you can reach me directly using the number and extension below.

Representative, Customer Experience

Moja odpowiedź:

Dear William,

You claimed that my navigation system cannot be operated by the passenger, because it is a security threat. I asked you why is that a security issue. You did not answer to that. Please answer that question.

Thank you,
Piotr Gabryjeluk

Brak odpowiedzi. Nikt się nie przejmuje. Po przeszukaniu Internetu mam wrażenie, że nie tylko ja mam ten problem i wszyscy są jednakowo ignorowani przez Mazdę.

Jak to naprawić?

Skoro Mazda ma w dupie wygodę klientów, może jest jakiś sposób na naprawę problemu? Wygląda na to, że jest to możliwe. Na stronie forum Mazdy6: http://forum.mazda6club.com/car-electronics/351338-infotainment-hacks.html znalazłem informację o tym, że problem może być rozwiązany przez zalogowanie się przez ssh do samochodu i wyłączenie flagi.

Tylko jak się zalogować? Okazuje się, że wystarczy podpiąć kartę Ethernetową do złącza USB w aucie, a auto pobierze adres IP przez DHCP, następne pod tym adresem na standardowym porcie SSH należy się zalogować na roota (hasło jci), przemontować system plików w tryb read-write mount -o rw,remount / a następnie wyedytować skrypt /jci/scripts/set_lvds_speed_restriction_config.sh wykomentowując linię zawierającą enable_speed_restriction.

Co z tego wynika?

Jeżeli to prawda (jeszcze tego nie sprawdzałem), to znaczy, że Mazda mając techniczną możliwość zdjęcia "zabezpieczenia" (które zresztą jest włączone tylko w niektórych krajach) odmawia tego klientom powołując się na kompletnie bezsensowne argumenty (że jest to podobno kwestia bezpieczeństwa). Dodatkowo obsługa klienta Mazdy nie odpowiada na pytania i ignoruje klientów.

Jednocześnie, zgodnie z opiniami Mazdofili, wychodzi na to, że Mazda postawiła na sprawdzone rozwiązanie (wygląda na to, że pod "maską" systemu infotainmentu mamy dość standardowego Linuxa) co powinno się przełożyć na niezawodność systemu.

Kwestię umożliwienia logowania na konto roota i trzyliterowe hasło zostawiam bez komentarza. Auto nie jest standardowo podłączone z Internetem i wymagany jest fizyczny dostęp do samochodu, żeby się dostać do systemu. Zakładam, że takie "standardowe" hasło i logowanie bezpośrednio na konto roota ułatwia pracę serwisantom, więc nie widzę w tym dużego zagrożenia.


Comments: 0

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License