Slide 1

Slide 1 text

SeedLight: Hardening LED-to-Camera Communication with Random Linear Coding Alexis Duque1,2,3, Razvan Stanica2,3, Hervé Rivano3,2, Adrien Desportes1 October 14, 2017 1Rtone, 2Univ Lyon, INSA Lyon, CITI 3Inria

Slide 2

Slide 2 text

Motivations • LED-to-Camera broadcast: attracting consummer interest • Issues cut down the communication goodput and make it unreliable: • asynchronism and high bit loss ratio • constrained PHY-SDU size • no feedback nor ACK Proposal: SeedLight, a low-overhead coding scheme designed to face the inherent packet losses in line-of-sight LED-to-Camera communication. The physical layer service data unit is generally known as a frame. To avoid any confusion with the picture frame taken by the camera, we use the term PHY-SDU. 1

Slide 3

Slide 3 text

Related Works and Contributions Related Works: • CeilingCast, Hao et al. [5]: Raptor Code • Martian, Du et al. [2]: LT codes, NLOS information broadcast ⇒↗ goodput but large computational complexity + header overhead Our main contributions: • First random linear coding (RLC) for VLC and OCC. • Reduce the RLC overhead by using a pseudo-random linear coding (PRLC) method • Low code complexity ⇒ cheap MCUs. 2

Slide 4

Slide 4 text

LED-to-Camera communications insight

Slide 5

Slide 5 text

Color LEDs as VLC emitter Modulation design • On-Off Keying (OOK), LED ON ⇒ 1, LED OFF ⇒ 0 • Manchester line coding, to avoid LED flickering • Frequency Band 4-12 kHz Figure 1: PHY-SDU format at 8 KHz. Data Symbol 0 01 (OFF-ON) 1 10 (ON-OFF) Table 1: Manchester code 3

Slide 6

Slide 6 text

Camera as VLC receiver Rolling Shutter Effect [1, 3, 7, 6, 9] ..... time pixels exposure row 1 row 2 1 0 1 0 0 4

Slide 7

Slide 7 text

LOS Scenario 5

Slide 8

Slide 8 text

LED-to-Camera Channel Figure 2: Frame capture time and inter-frame gap • M : camera capture time • N : inter-frame time 6

Slide 9

Slide 9 text

Random Linear Coding

Slide 10

Slide 10 text

Random Linear Coding concepts Random Linear Coding [4] 1. Split a message into multiples chunks of the same size 2. Create a linear dependency between them 3. Transmit chunks with loss 4. Solve the linear system created by the chunks Issues • Overhead ++ • Bytes to receive ++ • Computation/memory ++ 7

Slide 11

Slide 11 text

Random Linear Coding An emitter Tx wants to send a message of G bytes to a receiver Rx, split into N blocks b1, . . . , bN encapsulated in a PHY-SDU • Tx: emitter, Rx: receiver, p: PHY-SDU payload size • G: generation size = data to send, B: uncoded blocks N: blocks number • GF(q): Galois field where q = 2γ is the field size • N coefficients of γ bits c = (c1, . . . , cN), ci ∈ GF(q), are used to generate the coding vector v by linearly combining uncoded blocks as follow: v = N ∑ i=1 (ci × bi) • Concatenate c and v ⇒ C = [c, v] ⇒ overhead = N ∗ γ bits. 8

Slide 12

Slide 12 text

SeedLight Solution: coding vector replaced by a seed of a Mersenne-Twister PRNG Chunk generation method 1. Generates a seed s ∈ [0...2α] (α = number of bits of the seed) 2. Init the Mersenne-Twister PRNG [8] with s 3. Generate N coefficients with PRNG ⇒ c 4. Linearly combine the N uncoded blocks with c ⇒ v 5. Built the chunk C prepending s to v ⇒ C = [s, v]. ⇒ overhead = α vs N, e.g. 8 bits vs 50 bits SYNC PB SEQ SEED PAYLOAD PAYLOAD PHY-SDU PAYLOAD p p l 9

Slide 13

Slide 13 text

SeedLight Evaluation

Slide 14

Slide 14 text

Testbed Nucleo STM32L0 development board (left). Chunks are computed on a laptop and sent to the MCU to be emitted via serial BUS. Decoding has been implemented on the smartphone. 10

Slide 15

Slide 15 text

Packet Loss Figure 3: Frames captured at 0, 5, 10 and 20cm 5 10 15 20 25 30 35 40 0 0.2 0.4 0.6 0.8 1 Distance (cm) Ratio 20bits 40bits 40bits 80bits 128bits ⇒ The seed size and the overhead ratio must be carefully choosen 11

Slide 16

Slide 16 text

Chunk redundancy vs seed length and N 6 8 10 12 14 0 10 20 30 40 50 60 70 80 90 N=25 N=50 N=100 N=150 Seed resolution (bit) Chunk redundancy (%) ⇒ Redundancy introduced by duplicated chunks ⇒ 8 bits OK if N = 50 ⇒ 10 bits OK if N = {100, 150} 12

Slide 17

Slide 17 text

Goodput vs seed length 6 8 10 12 14 16 18 20 0 0.5 1 1.5 2 2.5 3 P e = 0.3 P e = 0.5 P e = 0.7 Seed (bit) appended to 16 bits data Goodput (kbit/s) ⇒ No gain after certain size ⇒ 8 bits seed optimal for G=50 13

Slide 18

Slide 18 text

SeedLight Goodput gain 0 5 10 15 20 25 30 35 40 45 50 0 0.5 1 1.5 2 2.5 3 throughput goodput w/ RL Coding goodput W/O RL Coding Distance (cm) Throughput (kbit/s) ⇒ 2.3 kbit/s of goodput at 5cm. Between 60% and 90% gain. 14

Slide 19

Slide 19 text

Implementation discussion

Slide 20

Slide 20 text

Problem statement • Coding on IoT devices: low memory and low computational capacity • Core Clock < 100 MHz • RAM < 16 Ko • Flash < 256 Ko • Should be able to run concurrently with other tasks • Is there enough volatile memory ? • Is SeedLight firmware size smaller than the MCU flash size ? 15

Slide 21

Slide 21 text

Use cases and MCU modes Pre-computed mode: build N chunks then send all. RAM ++. Sequential mode: build 1 chunk then send, build 1 chunk then send ... Delay ++ Parallel mode: multi-tasking = compute a chunk when the previous one is transmitting. If the chunk computation time is larger than the transmission time, the transmission will stop during this time gap. CPU ++ 16

Slide 22

Slide 22 text

Galois Field Arithmetic Choice Method Operation Memory. (1) Mult. LT 1 LK 2.22γ (2) Log. LT 3 LK + 2 BR + 1 MOD + 1 ADD 2.2γ (3) No LT γ . (2 XOR + 2 SHIFT + 1 AND) 0 • (3) large number of operations (no LTs) ⇒ avoided • (1) fast, LTs size ≥ MCU flash size ⇒ for decoding by smartphone • (2) well balanced between memory requirement and complexity for Tx ⇒ for coding by MCU ⇒ O(N2P) to produce N chunks of P symbols ⇒ O(N3 + N2P) to decode a matrix of N × (N + P) bytes 17

Slide 23

Slide 23 text

Computation time on testbed 0 50 100 150 200 250 300 350 400 0 2 4 6 8 10 8 MHz 50 MHz 100 MHz Chunk TX duration Generation size G (bytes) Duration (ms) 0 50 100 150 200 250 300 350 400 0 2 4 6 8 10 12 Nexus 5 (24 bits chunk) Nexus 6P (24 bits chunk) Generation size G (bytes) Chunk processing duration (ms) Coding on a MCU (left). Decoding on the Nexus 5 and 6P (right). ⇒ Coding in // with modulating the LED is OK if G ≤ 150 ⇒ 30 fps / 6 chunks → smartphone decodes in real time 18

Slide 24

Slide 24 text

Goodput vs implementation 5 15 0 0.5 1 1.5 2 2.5 Distance (cm) Goodputs (kbit/s) Pre-computed G=100 Parallel G=100 Sequential G=100 Pre-computed G=400 Parallel G=400 Sequential G=400 ⇒ SeedLight can be implemented even on the cheapest MCU with a minor impact on the communication performance 19

Slide 25

Slide 25 text

Conclusion

Slide 26

Slide 26 text

Summary • SeedLight: a RLC based lightweight erasure coding for LED-to-Camera communication • Seed replaces RLC coding header. • Increases the goodput from 1.5 to 2.5kbps vs primary packet retransmission. • Much smaller overhead vs the erasure coding scheme [10, 2] • Suitable when PHY-SDU ≤ 30 bits. • SeedLight works on low-cost MCUs 20

Slide 27

Slide 27 text

Further work • Coding for Multi LEDs communications • Further reduce the code overhead • Seed transmission strategy 21

Slide 28

Slide 28 text

Thank you for listening ! Questions time :) 21

Slide 29

Slide 29 text

References I C. Danakis, M. Afgani, G. Povey, I. Underwood, and H. Haas. Using a CMOS camera sensor for visible light communication. 2012 IEEE Globecom Workshops, GC Wkshps 2012, pages 1244–1248, 2012. H. Du, J. Han, X. Jian, T. Jung, C. Bo, Y. Wang, and X.-Y. Li. Martian: Message Broadcast via LED Lights to Heterogeneous Smartphones. IEEE Journal on Selected Areas in Communications, 35(5):1154–1162, may 2017. J. Ferrandiz-Lahuerta, D. Camps-Mur, and J. Paradells-Aspas. A Reliable Asynchronous Protocol for VLC Communications Based on the Rolling Shutter Effect. In 2015 IEEE Global Communications Conference (GLOBECOM), pages 1–6. IEEE, dec 2015.

Slide 30

Slide 30 text

References II C. Fragouli, J.-Y. Le Boudec, and J. Widmer. Network Coding: An Instant Primer. ACM SIGCOMM Computer Communication Review, 36(1):63, 2006. J. Hao, Y. Yang, and J. Luo. CeilingCast: Energy efficient and location-bound broadcast through LED-camera communication. In IEEE INFOCOM 2016 - The 35th Annual IEEE International Conference on Computer Communications, volume 2016-July, pages 1–9. IEEE, apr 2016. Y.-S. Kuo, P. Pannuto, K.-J. Hsiao, and P. Dutta. Luxapose. In Proceedings of the 20th annual international conference on Mobile computing and networking - MobiCom ’14, pages 447–458, New York, New York, USA, sep 2014. ACM Press.

Slide 31

Slide 31 text

References III H.-Y. Lee, H.-M. Lin, Y.-L. Wei, H.-I. Wu, H.-M. Tsai, and K. C.-J. Lin. RollingLight. In Proceedings of the 13th Annual International Conference on Mobile Systems, Applications, and Services - MobiSys ’15, pages 167–180, New York, New York, USA, 2015. ACM Press. M. Matsumoto and T. Nishimura. Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Transactions on Modeling and Computer Simulation, 8(1):3–30, jan 1998.

Slide 32

Slide 32 text

References IV N. Rajagopal, P. Lazik, and A. Rowe. Visual light landmarks for mobile devices. In IPSN-14 Proceedings of the 13th International Symposium on Information Processing in Sensor Networks, volume 32, pages 249–260. IEEE, apr 2014. Y. Yang, J. Hao, and J. Luo. CeilingTalk: Lightweight Indoor Broadcast Through LED-Camera Communication. IEEE Transactions on Mobile Computing, (April):1–1, 2017.