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
FOSSASIA
13 March 2015
to make the internet of things
@janjongboom
abusing phones
FOSSASIA
13 March 2015
to make the internet of things
@janjongboom
@janjongboom
JanOSTurn your smartphone into an IoT board
JanOS
Alternative OS for smartphones
Based on Firefox OS
Runs on mobile phones
Runs without a screen
GSM Shield
Only 2G
Antenna not included
GSM Shield
Only 2G
Antenna not included
S$ 91
S$ 44
Firefox OS without UI,
with extra low level APIs
So what is JanOS?
(and some kernel changes)
Extra APIs
Filesystem access
Running native code
IoT functionality like GPIO
Linux
Kernel
Linux
Kernel
Gecko
Linux
Kernel
Gecko HTML5
UI
Linux
Kernel
Gecko HTML5
UI
Has all phone APIs in JS
Linux
Kernel
Gecko
Has all phone APIs in JS
Getting started
Flashing JanOS on a phone
Getting started
Flashing JanOS on a phone
www.janos.io
www.janos.io
First screwdriver ever!
Hello world
1. Clone repo
2. Create JS file with some code
3. Add the JS file to index.html
https://github.com/jan-os/janos
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
1 var conn = navigator.mozMobileConnections[0];
2 conn.addEventListener('voicechange', function vc() {
3 if (conn.voice.co...
Doorbell
Proximity sensor
Ring over bluetooth
Live video stream
Bluetooth doorbell
1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() {
2 window.onuserproximity = function(e) {
...
Bluetooth doorbell
1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() {
2 window.onuserproximity = function(e) {
...
Bluetooth doorbell
1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() {
2 window.onuserproximity = function(e) {
...
Bluetooth doorbell
1 enableBluetoothAudio('00:0C:8A:75:EF:30').then(function() {
2 window.onuserproximity = function(e) {
...
Brian
BrianTracker™
2G connection
Connected to push server
Geolocation on request
Thank you!
www.janos.io
@janjongboom
Thank you!
www.janos.io
@janjongboom
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Abusing phones to make the internet of things - FOSSASIA 2015
Upcoming SlideShare
Loading in …5
×

Abusing phones to make the internet of things - FOSSASIA 2015

2,291 views

Published on

Presentation I gave during FOSSASIA about Firefox OS & IoT.

  • Hey guys! Who wants to chat with me? More photos with me here 👉 http://www.bit.ly/katekoxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Abusing phones to make the internet of things - FOSSASIA 2015

  1. 1. abusing phones FOSSASIA 13 March 2015 to make the internet of things @janjongboom
  2. 2. abusing phones FOSSASIA 13 March 2015 to make the internet of things @janjongboom
  3. 3. @janjongboom
  4. 4. JanOSTurn your smartphone into an IoT board
  5. 5. JanOS Alternative OS for smartphones Based on Firefox OS Runs on mobile phones
  6. 6. Runs without a screen
  7. 7. GSM Shield Only 2G Antenna not included
  8. 8. GSM Shield Only 2G Antenna not included S$ 91
  9. 9. S$ 44
  10. 10. Firefox OS without UI, with extra low level APIs So what is JanOS? (and some kernel changes)
  11. 11. Extra APIs Filesystem access Running native code IoT functionality like GPIO
  12. 12. Linux Kernel
  13. 13. Linux Kernel Gecko
  14. 14. Linux Kernel Gecko HTML5 UI
  15. 15. Linux Kernel Gecko HTML5 UI Has all phone APIs in JS
  16. 16. Linux Kernel Gecko Has all phone APIs in JS
  17. 17. Getting started Flashing JanOS on a phone
  18. 18. Getting started Flashing JanOS on a phone
  19. 19. www.janos.io
  20. 20. www.janos.io
  21. 21. First screwdriver ever!
  22. 22. Hello world 1. Clone repo 2. Create JS file with some code 3. Add the JS file to index.html https://github.com/jan-os/janos
  23. 23. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  24. 24. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  25. 25. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  26. 26. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  27. 27. 1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });
  28. 28. Doorbell Proximity sensor Ring over bluetooth Live video stream
  29. 29. 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 });
  30. 30. 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 });
  31. 31. 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 });
  32. 32. 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 });
  33. 33. Brian
  34. 34. BrianTracker™ 2G connection Connected to push server Geolocation on request
  35. 35. Thank you! www.janos.io @janjongboom
  36. 36. Thank you! www.janos.io @janjongboom

×