Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Abusing phones to make the internet of things - JSConf EU 2014

3,209 views

Published on

My talk from JSConf EU 2014 about abusing Firefox OS to make Internet of Things appliances.

Published in: Internet
  • Be the first to comment

Abusing phones to make the internet of things - JSConf EU 2014

  1. 1. abusing phones to make the internet of things Jan Jongboom JSConf EU 2014
  2. 2. @janjongboom Jan, live in Amsterdam. Work for Telenor, LAAARGE telco. They pay me to work on Firefox OS.
  3. 3. @janjongboom Jan, live in Amsterdam. Work for Telenor, LAAARGE telco. They pay me to work on Firefox OS.
  4. 4. Let me start w/ confession... Before this talk I never owned a screwdriver. That’s a dangerous road when doing a hardware talk.
  5. 5. First screwdriver ever! Let me start w/ confession... Before this talk I never owned a screwdriver. That’s a dangerous road when doing a hardware talk.
  6. 6. Maker movement is EVERYWHERE (Kickstarter, spaces, fairs, Wired) These days hardware is totally coming back. Maker movement is everywhere. Can buy all stuff on Kickstarter, iot, etc. Even on cover of Wired.
  7. 7. Reason: Arduino & Raspberry boards that can connect ordinary stuff. Amazing for building new stuff. Phone sensors can be attached, low cost because huge volume.
  8. 8. Now one big problem for people that hardware-challenged like me. I don’t wanna do stuff like this, but still want to make things.
  9. 9. € 34,99 Also: stuff is expensive. Get a TFT display for a Rasperry Pi for 35 euro
  10. 10. € 25,- While you can get a FULL phone for 25?!
  11. 11. So let’s make some cool shit. This is the Geeksphone Peak. It just has normal phone features. Compared to 25$ it has 1 camera more & 3G instead of 2g. It can run Firefox OS that’s nice.
  12. 12. Bluetooth, WiFi, 3G, 2 Cameras, GPS, qHD touch screen So let’s make some cool shit. This is the Geeksphone Peak. It just has normal phone features. Compared to 25$ it has 1 camera more & 3G instead of 2g. It can run Firefox OS that’s nice.
  13. 13. Bluetooth, WiFi, 3G, 2 Cameras, GPS, qHD touch screen So let’s make some cool shit. This is the Geeksphone Peak. It just has normal phone features. Compared to 25$ it has 1 camera more & 3G instead of 2g. It can run Firefox OS that’s nice.
  14. 14. From code perspective it looks like this: kernel, Gecko, UI. We don’t need a UI for IoT things. So let’s strip it off. What do we have: phone chipset + JS bindings to everything (OMG AWESOME)
  15. 15. Linux Kernel From code perspective it looks like this: kernel, Gecko, UI. We don’t need a UI for IoT things. So let’s strip it off. What do we have: phone chipset + JS bindings to everything (OMG AWESOME)
  16. 16. Linux Kernel Gecko From code perspective it looks like this: kernel, Gecko, UI. We don’t need a UI for IoT things. So let’s strip it off. What do we have: phone chipset + JS bindings to everything (OMG AWESOME)
  17. 17. Linux Kernel Gecko HTML5 UI From code perspective it looks like this: kernel, Gecko, UI. We don’t need a UI for IoT things. So let’s strip it off. What do we have: phone chipset + JS bindings to everything (OMG AWESOME)
  18. 18. Linux Kernel Gecko HTML5 UI Has all phone APIs in JS From code perspective it looks like this: kernel, Gecko, UI. We don’t need a UI for IoT things. So let’s strip it off. What do we have: phone chipset + JS bindings to everything (OMG AWESOME)
  19. 19. Linux Kernel Gecko Has all phone APIs in JS From code perspective it looks like this: kernel, Gecko, UI. We don’t need a UI for IoT things. So let’s strip it off. What do we have: phone chipset + JS bindings to everything (OMG AWESOME)
  20. 20. That is awesome.
  21. 21. Only thing is that we still have a body around the phone. Let’s remove that.
  22. 22. Remove screws and open le phone.
  23. 23. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  24. 24. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  25. 25. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  26. 26. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  27. 27. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  28. 28. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  29. 29. We have SIM card, SD card, screen connector, back camera, flash, touchscreen connector
  30. 30. Camera can click it out. Have standard connectors. Very awesome
  31. 31. Camera can click it out. Have standard connectors. Very awesome
  32. 32. There is also this thing. It does radio communication. Also need it. I don’t what this is, I just ripped it off and it still works.
  33. 33. So we are left with this. Printboard, radio and camera.
  34. 34. I also wanted to reuse the touchscreen.
  35. 35. So i started fiddling with screwdriver as these things are glued together
  36. 36. Didnt end so well
  37. 37. So I figured just detach the touchscreen connector.
  38. 38. Didnt work out that well either.
  39. 39. Problem: no Wifi... These paper thingies are apparently antenna’s OMG
  40. 40. So some tape and all is well.
  41. 41. So now we have super cool system on a chip 3/4 of a creditcard.
  42. 42. Linux Kernel Gecko Has all phone APIs in JS Now we can run cooler shit on top of it. As I have a big ego I called it JanOS
  43. 43. Linux Kernel Gecko JanOS Has all phone APIs in JS Now we can run cooler shit on top of it. As I have a big ego I called it JanOS
  44. 44. Linux Kernel Gecko JanOS Has all phone APIs in JS Now we can run cooler shit on top of it. As I have a big ego I called it JanOS
  45. 45. JanOS Alternative to Firefox OS Some batteries included Need rooted Firefox OS phone with ADB enabled So it runs on any Firefox OS enabled phone. It comes with some batteries, like autoconnecting 3G, APN detection, Wifi and camera.
  46. 46. Booting / !ashing $ make reset-phone && adb logcat Keep ur casing intact, don’t need to press battery
  47. 47. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta name="viewport" content="width=device-5 initial-scale=1"> 6 <meta charset="utf-8"> 7 8 <script src="js/bootstrap.js"></script> 9 <script defer src="js/camera.js"></script> 10 <script defer src="js/security_cam.js"></script> 11 <script defer src="js/doorbell.js"></script> 12 <script defer src="js/bluetooth.js"></script> 13 <script defer src="js/tracker.js"></script> 14 </head> 16 <body> 17 <h1>OMG WELCOME TO JANOS 1.0!</h1> 18 </body> 19 </html> So when we start Gecko we boot it into a webpage. Easy easy easy
  48. 48. about:app-manager We can now connect the app manager and execute JS and debug shit. Very cool.
  49. 49. Security camera Every 5 seconds take photo Save to storage (4GB!) or SD Sync with cloud So let’s look at some cool ways of using this thing. We can make a security cam, easy easy.
  50. 50. Taking picture to storage 1 window.camera.takePicture('front').then(function(blob) { 2 var storage = navigator.getDeviceStorage('pictures'); 3 var req = storage.addNamed(blob, 'myawesomepicture.jpg'); 4 req.onsuccess = function() { 5 console.log('Saved on internal storage!'); 6 }; 7 });
  51. 51. Taking picture to storage 1 window.camera.takePicture('front').then(function(blob) { 2 var storage = navigator.getDeviceStorage('pictures'); 3 var req = storage.addNamed(blob, 'myawesomepicture.jpg'); 4 req.onsuccess = function() { 5 console.log('Saved on internal storage!'); 6 }; 7 });
  52. 52. Taking picture to storage 1 window.camera.takePicture('front').then(function(blob) { 2 var storage = navigator.getDeviceStorage('pictures'); 3 var req = storage.addNamed(blob, 'myawesomepicture.jpg'); 4 req.onsuccess = function() { 5 console.log('Saved on internal storage!'); 6 }; 7 });
  53. 53. Taking picture to storage 1 window.camera.takePicture('front').then(function(blob) { 2 var storage = navigator.getDeviceStorage('pictures'); 3 var req = storage.addNamed(blob, 'myawesomepicture.jpg'); 4 req.onsuccess = function() { 5 console.log('Saved on internal storage!'); 6 }; 7 });
  54. 54. Doorbell Proximity sensor Ring over bluetooth Live video stream Or a doorbell over bluetooth. That’s rad.
  55. 55. Bluetooth doorbell 1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() { 2 window.onuserproximity = function(e) { 3 if (e.near) { 4 var audio = new Audio('/sounds/doorbell.ogg'); 5 audio.play(); 6 } 7 }; 8 }); Pair it, play a soud when user is close to proximity. Truly wireless.
  56. 56. Bluetooth doorbell 1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() { 2 window.onuserproximity = function(e) { 3 if (e.near) { 4 var audio = new Audio('/sounds/doorbell.ogg'); 5 audio.play(); 6 } 7 }; 8 }); Pair it, play a soud when user is close to proximity. Truly wireless.
  57. 57. Bluetooth doorbell 1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() { 2 window.onuserproximity = function(e) { 3 if (e.near) { 4 var audio = new Audio('/sounds/doorbell.ogg'); 5 audio.play(); 6 } 7 }; 8 }); Pair it, play a soud when user is close to proximity. Truly wireless.
  58. 58. Bluetooth doorbell 1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() { 2 window.onuserproximity = function(e) { 3 if (e.near) { 4 var audio = new Audio('/sounds/doorbell.ogg'); 5 audio.play(); 6 } 7 }; 8 }); Pair it, play a soud when user is close to proximity. Truly wireless.
  59. 59. Another real life usecase. This is Brian, as you can see Brian is quite the wild boy.
  60. 60. Brian Another real life usecase. This is Brian, as you can see Brian is quite the wild boy.
  61. 61. Brian has this tendency to get lost VERY often. In Warsaw he had to sleep on a bench outside because he couldn’t find the apartment. He also never has any power in his phone. Solution: the BrianTracker. No screen, so low battery consumption.
  62. 62. Brian has this tendency to get lost VERY often. In Warsaw he had to sleep on a bench outside because he couldn’t find the apartment. He also never has any power in his phone. Solution: the BrianTracker. No screen, so low battery consumption.
  63. 63. BrianTracker™ 2G connection Connected to push server Geolocation on request Brian has this tendency to get lost VERY often. In Warsaw he had to sleep on a bench outside because he couldn’t find the apartment. He also never has any power in his phone. Solution: the BrianTracker. No screen, so low battery consumption.
  64. 64. And I can press a button and track him down, just from this small device I put in his coat.
  65. 65. OK. DEMO TIME!!111
  66. 66. Get hacking Alright, this is cool and low budget, but START HACKING. Only way to really feel the powerz of hardware. Write your own scripts and make stuff. Yay. ZTE Open C is 69$ and can be rooted.
  67. 67. Get hacking Grab a rootable FxOS phone Crack it open Write your own scripts PROFIT! Alright, this is cool and low budget, but START HACKING. Only way to really feel the powerz of hardware. Write your own scripts and make stuff. Yay. ZTE Open C is 69$ and can be rooted.
  68. 68. Thank you! http://janjongboom.com THANKS!

×