Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SDR Docker

SDR Docker

RTL-SDR + Docker
Introduction to RTL-SDR
http://eueung.github.io/docker-stuff/rtl-sdr

1ec13070abf6996a0bc06b9be103ea85?s=128

Eueung Mulyana

June 08, 2016
Tweet

Transcript

  1.   SDR Sejuta Umat RTL-SDR (+Docker) Eueung Mulyana http://eueung.github.io/docker-stuff/rtl-sdr

    CodeLabs | Attribution-ShareAlike CC BY-SA 1 / 38
  2. Outline Preparation Google Radio Receiver RTL-SDR with Docker OpenWebRX rtl_fm

    + Stream rtl_fm_python 2 / 38
  3.   Preparation 3 / 38

  4. $ f l a s h - c c o

    n f i g . y a m l - d / d e v / m m c b l k 0 h y p r i o t o s - r p i - v 0 . 8 . 0 . i m g # c o n f i g . y a m l h o s t n a m e : n o d e 1 w i f i : i n t e r f a c e s : w l a n 0 : s s i d : " l k 8 f m " p a s s w o r d : " 1 2 3 4 5 6 7 8 9 0 " # - - - $ s u d o . / b l a c k l i s t . s h $ l e s s / e t c / m o d p r o b e . d / r t l s d r - b l a c k l i s t . c o n f # b l a c k l i s t . s h - m a n u a l l y b l a c k l i s t # ! / b i n / b a s h s u d o e c h o - e " b l a c k l i s t r t l 2 8 3 2 \ n \ b l a c k l i s t r 8 2 0 t \ n \ b l a c k l i s t r t l 2 8 3 0 \ n \ b l a c k l i s t d v b _ u s b _ r t l 2 8 x x u " > / e t c / m o d p r o b e . d / r t l s d r - b l a c k l i s t . c o n f 4 / 38 RPI
  5. $ a p t - c a c h e

    p o l i c y r t l - s d r r t l - s d r : I n s t a l l e d : 0 . 5 . 3 - 5 C a n d i d a t e : 0 . 5 . 3 - 5 V e r s i o n t a b l e : * * * 0 . 5 . 3 - 5 5 0 0 5 0 0 h t t p : / / k a m b i n g . u i . a c . i d / u b u n t u x e n i a l / u n i v e r s e a m d 6 4 P a c k a g e s 1 0 0 / v a r / l i b / d p k g / s t a t u s $ s u d o a p t i n s t a l l r t l - s d r # p a c k a g e $ c a t / e t c / m o d p r o b e . d / r t l - s d r - b l a c k l i s t . c o n f # T h i s s y s t e m h a s l i b r t l s d r 0 i n s t a l l e d i n o r d e r t o # u s e d i g i t a l v i d e o b r o a d c a s t r e c e i v e r s a s g e n e r i c # s o f t w a r e d e f i n e d r a d i o s . b l a c k l i s t d v b _ u s b _ r t l 2 8 x x u b l a c k l i s t e 4 0 0 0 b l a c k l i s t r t l 2 8 3 2 # m a n u a l $ c a t / e t c / m o d p r o b e . d / r t l s d r - b l a c k l i s t . c o n f b l a c k l i s t r t l 2 8 3 2 b l a c k l i s t r 8 2 0 t b l a c k l i s t r t l 2 8 3 0 b l a c k l i s t d v b _ u s b _ r t l 2 8 x x u 5 / 38 PC/Laptop Test - Setup
  6. $ r t l _ t e s t -

    h r t l _ t e s t , a b e n c h m a r k t o o l f o r R T L 2 8 3 2 b a s e d D V B - T r e c e i v e r s U s a g e : [ - s s a m p l e r a t e ( d e f a u l t : 2 0 4 8 0 0 0 H z ) ] [ - d d e v i c e _ i n d e x ( d e f a u l t : 0 ) ] [ - t e n a b l e E l o n i c s E 4 0 0 0 t u n e r b e n c h m a r k ] [ - p [ s e c o n d s ] e n a b l e P P M e r r o r m e a s u r e m e n t ( d e f a u l t : 1 0 s e c o n d s ) ] [ - b o u t p u t _ b l o c k _ s i z e ( d e f a u l t : 1 6 * 1 6 3 8 4 ) ] [ - S f o r c e s y n c o u t p u t ( d e f a u l t : a s y n c ) ] $ r t l _ t e s t F o u n d 1 d e v i c e ( s ) : 0 : R e a l t e k , R T L 2 8 3 8 U H I D I R , S N : 0 0 0 0 0 0 0 1 U s i n g d e v i c e 0 : G e n e r i c R T L 2 8 3 2 U O E M F o u n d R a f a e l M i c r o R 8 2 0 T t u n e r S u p p o r t e d g a i n v a l u e s ( 2 9 ) : 0 . 0 0 . 9 1 . 4 2 . 7 3 . 7 7 . 7 8 . 7 1 2 . 5 1 4 . 4 1 5 . 7 1 6 . 6 1 9 . 7 2 0 . 7 [ R 8 2 X X ] P L L n o t l o c k e d ! S a m p l i n g a t 2 0 4 8 0 0 0 S / s . I n f o : T h i s t o o l w i l l c o n t i n u o u s l y r e a d f r o m t h e d e v i c e , a n d r e p o r t i f s a m p l e s g e t l o s t . I f y o u o b s e r v e n o f u r t h e r o u t p u t , e v e r y t h i n g i s f i n e . R e a d i n g s a m p l e s i n a s y n c m o d e . . . 6 / 38 PC/Laptop Test
  7. $ l s u s b B u s 0

    0 1 D e v i c e 0 0 3 : I D 0 4 2 4 : e c 0 0 S t a n d a r d M i c r o s y s t e m s C o r p . S M S C 9 5 1 2 / 9 5 1 4 F a s t E t h e r n e B u s 0 0 1 D e v i c e 0 0 2 : I D 0 4 2 4 : 9 5 1 4 S t a n d a r d M i c r o s y s t e m s C o r p . B u s 0 0 1 D e v i c e 0 0 1 : I D 1 d 6 b : 0 0 0 2 L i n u x F o u n d a t i o n 2 . 0 r o o t h u b $ l s u s b B u s 0 0 1 D e v i c e 0 0 4 : I D 0 b d a : 2 8 3 8 R e a l t e k S e m i c o n d u c t o r C o r p . R T L 2 8 3 8 D V B - T B u s 0 0 1 D e v i c e 0 0 3 : I D 0 4 2 4 : e c 0 0 S t a n d a r d M i c r o s y s t e m s C o r p . S M S C 9 5 1 2 / 9 5 1 4 F a s t E t h e r n e B u s 0 0 1 D e v i c e 0 0 2 : I D 0 4 2 4 : 9 5 1 4 S t a n d a r d M i c r o s y s t e m s C o r p . B u s 0 0 1 D e v i c e 0 0 1 : I D 1 d 6 b : 0 0 0 2 L i n u x F o u n d a t i o n 2 . 0 r o o t h u b $ r t l _ t e s t . . . 7 / 38 RPI Test
  8.   Local Receiver Google Radio Receiver radioreceiver@github by @jtarrio

    8 / 38
  9. 9 / 38 RTL2832U 820T2

  10. radioreceiver 10 / 38

  11. radioreceiver 11 / 38

  12. radioreceiver 12 / 38

  13.   Remote Receiver RTL-SDR with Docker 13 / 38

  14. 14 / 38 RTL2832U 820T2

  15. $ d o c k e r r u n

    - - r m - i t - - d e v i c e = / d e v / b u s / u s b s y s r u n / r p i - r t l - s d r - b a s e : 0 . 4 / b i n / s h # w h i c h r t l _ t c p # w h i c h r t l _ f m # w h i c h r t l _ t e s t / u s r / l o c a l / b i n / r t l _ t e s t # r t l _ t e s t F o u n d 1 d e v i c e ( s ) : 0 : R e a l t e k , R T L 2 8 3 8 U H I D I R , S N : 0 0 0 0 0 0 0 1 U s i n g d e v i c e 0 : G e n e r i c R T L 2 8 3 2 U O E M F o u n d R a f a e l M i c r o R 8 2 0 T t u n e r S u p p o r t e d g a i n v a l u e s ( 2 9 ) : 0 . 0 0 . 9 1 . 4 2 . 7 3 . 7 7 . 7 8 . 7 1 2 . 5 1 4 . 4 1 5 . 7 1 6 . 6 1 9 . 7 2 0 . 7 [ R 8 2 X X ] P L L n o t l o c k e d ! S a m p l i n g a t 2 0 4 8 0 0 0 S / s . I n f o : T h i s t o o l w i l l c o n t i n u o u s l y r e a d f r o m t h e d e v i c e , a n d r e p o r t i f s a m p l e s g e t l o s t . I f y o u o b s e r v e n o f u r t h e r o u t p u t , e v e r y t h i n g i s f i n e . . . . 15 / 38 Image by sysrun
  16. # D o c k e r f i l

    e - 0 1 F R O M r e s i n / r p i - r a s p b i a n : j e s s i e - 2 0 1 6 0 6 0 1 M A I N T A I N E R E M R U N a p t - g e t u p d a t e & & \ a p t - g e t i n s t a l l - y r t l - s d r & & \ a p t - g e t c l e a n & & \ r m - r f / v a r / l i b / a p t / l i s t s / * W O R K D I R / $ d o c k e r b u i l d - f D o c k e r f i l e - 0 1 - - r m - t e m - r t l s d r : j e s s i e . # T e s t $ d o c k e r r u n - - r m - i t - - d e v i c e = / d e v / b u s / u s b e m - r t l s d r : j e s s i e / b i n / s h 16 / 38 Build New Image
  17. $ d o c k e r r u n

    - - r m - i t - p 5 3 2 5 : 5 3 2 5 - - d e v i c e = / d e v / b u s / u s b s y s r u n / r p i - r t l - s d r - b a s e : 0 . 4 r t # o r $ d o c k e r r u n - - r m - i t - p 5 3 2 5 : 5 3 2 5 - - d e v i c e = / d e v / b u s / u s b e m - r t l s d r : j e s s i e r t l _ t c p - a 0 . 17 / 38 Start Server rtl_tcp
  18. Start rtl_tcp Client & Connect ... We're using SDR# or

    any other rtl_tcp-compatible clients ... 18 / 38
  19. SDR# 19 / 38

  20.   Remote Receiver OpenWebRX 20 / 38

  21. # D o c k e r f i l

    e - 0 2 F R O M s y s r u n / r p i - r t l - s d r - b a s e : 0 . 4 M A I N T A I N E R E M , F r e d e r i k G r a n n a R U N a p t - g e t u p d a t e & & \ a p t - g e t i n s t a l l - y l i b f f t w 3 - d e v a p t - u t i l s n m a p p y t h o n 2 . 7 v i m - - n o - i n s t a l l - r e c o m m e n d a p t - g e t c l e a n & & \ r m - r f / v a r / l i b / a p t / l i s t s / * W O R K D I R / t m p R U N g i t c l o n e h t t p s : / / g i t h u b . c o m / s i m o n y i s z k / c s d r . g i t & & \ c d c s d r & & \ m a k e & & \ m a k e i n s t a l l & & \ c d / & & \ r m - r f / t m p / c s d r W O R K D I R / o p t R U N g i t c l o n e h t t p s : / / g i t h u b . c o m / s i m o n y i s z k / o p e n w e b r x . g i t W O R K D I R / o p t / o p e n w e b r x E X P O S E 8 0 7 3 8 8 8 8 4 9 5 1 C M D p y t h o n 2 . 7 o p e n w e b r x . p y 21 / 38 Dockerfile
  22. $ d o c k e r b u i

    l d - f D o c k e r f i l e - 0 2 - - r m - t r p i - o p e n w e b r x : v 1 . . . . $ c d ~ / o p e n w e b r x & & g i t c l o n e h t t p s : / / g i t h u b . c o m / s i m o n y i s z k / o p e n w e b r x . g i t $ n a n o c o n f i g _ w e b r x . p y # c e n t e r _ f r e q = 1 4 3 9 8 0 0 0 0 # p p m = 9 $ d o c k e r r u n - - r m - i t - p 8 0 7 3 : 8 0 7 3 - - d e v i c e = / d e v / b u s / u s b - v ~ / o p e n w e b r x / o p e n w e b r x : / o p t / 22 / 38 Build & Run
  23. OpenWebRX 23 / 38

  24. OpenWebRX 24 / 38

  25.   Remote Receiver rtl_fm + Stream 25 / 38

  26. # D o c k e r f i l

    e - 0 3 F R O M e m - r t l s d r : j e s s i e M A I N T A I N E R E M R U N a p t - g e t u p d a t e & & \ a p t - g e t i n s t a l l - y s o x s o c a t l i b s o x - f m t - m p 3 & & \ a p t - g e t c l e a n & & \ r m - r f / v a r / l i b / a p t / l i s t s / * W O R K D I R / w o r k # - - - # s t a r t - 0 3 . s h # ! / b i n / s h r t l _ f m - M w b f m - f $ 1 | s o x - t r a w - r 2 4 k - e s - b 1 6 - c 1 - V 1 - - t m p 3 - | s o c a t - u - T C P - L I S T 26 / 38 Dockerfile & Script
  27. $ d o c k e r b u i

    l d - f D o c k e r f i l e - 0 3 - - r m - t r p i - r t l f m : v 1 . . . . $ d o c k e r r u n - - r m - t i - p 8 0 8 0 : 8 0 8 0 - v $ ( p w d ) : / w o r k - - d e v i c e = / d e v / b u s / u s b r p i - r t l f m : v 1 / 27 / 38 Build & Run
  28. # d e p s $ s u d o

    a p t i n s t a l l s o x l i b s o x - f m t - m p 3 # r e c e i v e & p l a y $ n e t c a t n o d e 1 . l o c a l 8 0 8 0 | p l a y - t m p 3 - # 28 / 38 Client 1 sox
  29. 29 / 38 Client 2 vlc

  30.   Remote Receiver rtl_fm_python 30 / 38

  31. # D o c k e r f i l

    e - 0 4 F R O M r e s i n / r p i - r a s p b i a n : j e s s i e - 2 0 1 6 0 6 0 1 M A I N T A I N E R E M R U N a p t - g e t u p d a t e & & a p t - g e t i n s t a l l - y \ p y t h o n p y t h o n - d e v p y t h o n - p i p p y t h o n - v i r t u a l e n v \ r t l - s d r & & \ b u i l d - e s s e n t i a l g i t l i b u s b - 1 . 0 - 0 . d e v l i b r t l s d r 0 l i b r t l s d r - d e v v l c & & \ a p t - g e t c l e a n & & \ r m - r f / v a r / l i b / a p t / l i s t s / * R U N p i p i n s t a l l f l a s k W O R K D I R / w o r k R U N g i t c l o n e h t t p s : / / g i t h u b . c o m / e u e u n g / r t l _ f m _ p y t h o n . g i t & & \ c d r t l _ f m _ p y t h o n & & . / b u i l d . s h R U N c h m o d + x / w o r k / r t l _ f m _ p y t h o n / w e b . s h R U N s e d - i ' s / g e t e u i d / g e t p p i d / ' / u s r / b i n / v l c W O R K D I R / w o r k / r t l _ f m _ p y t h o n C M D [ " / b i n / s h " , " w e b . s h " ] # - - - # w e b . s h . / r t l _ f m _ p y t h o n _ w e b . p y - M w b f m - f 1 0 7 . 5 M - p 9 - | c v l c - - d e m u x = r a w a u d - - r a w a u d - c h a n n e l s 31 / 38 Dockerfile
  32. $ d o c k e r b u i

    l d - f D o c k e r f i l e - 0 4 - - r m - t e m - r t l f m p y : v 1 . $ d o c k e r r u n - - r m - t i - p 1 0 1 0 0 : 1 0 1 0 0 - p 1 0 1 0 1 : 1 0 1 0 1 - - d e v i c e = / d e v / b u s / u s b e m - r t l f m p y : v 1 $ d o c k e r r u n - - r m - t i - p 1 0 1 0 0 : 1 0 1 0 0 - p 1 0 1 0 1 : 1 0 1 0 1 - - d e v i c e = / d e v / b u s / u s b e m - r t l f m p y : v 1 32 / 38 Build & Run
  33. 33 / 38

  34. 34 / 38

  35. 35 / 38 VLC Client

  36.   Refs 36 / 38

  37. Refs 1. Rtl_fm Guide: Updates for rtl_fm overhaul 2. th0ma5w/rtl_fm_python:

    An API and web application to interact with a running instance of RTL_FM 3. google/radioreceiver: An application to listen to broadcast stereo FM and AM radio from your Chrome browser or your ChromeBook computer using a $15 USB digital TV tuner. 4. sdr.hu/openwebrx 5. SDR# 6. Sysrun.io | Magic Smoke And Software 37 / 38
  38.   END Eueung Mulyana http://eueung.github.io/docker-stuff/rtl-sdr CodeLabs | Attribution-ShareAlike CC

    BY-SA 38 / 38