[SpiROSE] Hunting for a SBC, blinkies and bandwidth considerations

Hey y’all !

So we’re getting a compressed video stream from a laptop / computer / wizard, and we somehow need to send it to our blinkies. Thus I went hunting for a single board computer (à la Raspberry Pi) which meets the following criterias :

  • 5GHz Wifi : even a compressed H264 or H265 stream takes some bandwidth. Moreover, we’d like to have the most reliable link possible. With all the networks there are @telecom, 2.4GHz is out of the question.
  • High bandwidth wired link : be it LVDS, Ethernet, anything; we need to get the data out of the SBC. Either to an FPGA or straight to the blades, chances are hundreds of megabytes will be transferred. Gigabit ethernet is the most interesting one, as it is really easy to use and distribute to many nodes.
  • Hardware video decoder : H264 (or even better, H265) is a huge help to overcome bandwidth limitations. However, even a powerful SBC has troubles decoding a 1080p@60Hz stream in real time. The test was done on an Odroid C1+ (Cortex A5 @1.5GHz x4), wich decoded a 1080p H264 stream at 70fps, but with frequent dips at 30fps. This also leaves very little room for other stuff to be happening, as all 4 cores were maxed out.
  • SoM form factor : oh my, connectors are a mess. This is not a mandatory criteria, but it helps. We’d like to get a SBC that offers an edge connector, to easily integrate it on a custom PCB. A widely known example is the Raspberry Pi Compute Module.

After sifting through the interwebz, this table was born. It allowed us to highly narrow down a suitable candidate. A totally overkill board is the FireFly RK3399, but is pretty hard to find and is considered a VERY bad idea by T.G. because of the Rockchip chip. The final choice still needs to be made, but this will come in handy.

I also quickly went shopping for small RGB leds, and a few were found. This table summarises the 3 most interesting one, where the second one looks really good.

Since we are considering sending data to the blades using ethernet, I wanted to know what kind of bandwidth we could expect of a microcontroller loaded with a 100Mbps link. After some Quick’n’dirty® coding, I ended up with a board able to receive 7.38 MiB/s of data. This test was done without any kind of optimization, with lwIP+ChibiOS running on a STM32F407.

Much more was done, but I won’t repeat my colleagues :]

Next week, I’ll focus with the others of defining the exact LED count we want, but right now, we are looking at 128 LEDs per blade. We will also discuss some possible optimisations of the data we send to the blade, and the layout of the voxels : do we just map a square image on a circle (à la ROSEace) or do we try to be smarter and wrap it on it, or maybe be even smarter?

9 comments to [SpiROSE] Hunting for a SBC, blinkies and bandwidth considerations

  • Phh


    Here are some random thoughs:

    – Cortex A5 is really NOT powerful 😛 I’m actually impressed it can decode 1080p30. Was that with or without hw decoder?

    – If I understand correctly, one of your ideas for communication is to use one SBC with ethernet, and then have a ~ 10 ports gigabit ethernet switch to connect to the blades, and the blades will have an uC to convert in 100Mbps with the switch?
    Sounds like a very interesting idea. Especially, this reduces your driver/connectors/… requirement compared to LVDS/PCI-E/memory interface

    – As for using Rockchip chips, those days it is very well supported:
    And its support (both mainline or vendor BSP) is much much higher than Amlogic (the one in O-Droid C1+). FWIW, mainline support is still lacking hardware video codec, so you’ll have to live with vendor’s Linux 4.4 BSP.
    Still, that’s far better support than what I experienced on other SBC in ROSE.
    There even are some Rockchip guys hanging around IRC to help 🙂

    Do you have some computations that shows your actual video resolution requirements?
    I’m still suprised you need 3860p60

    – I’d say SoM form factor is pretty much a requirement. Say you take ethernet, I think you don’t want ethernet plugs/cables, just bare wires.

    – For WiFi, take care when choosing that 5GHz is not enough, 802.11a chips still exist, and they top at 54Mbps

    Have a nice week 🙂

    • Tuetuopay

      Thanks for your reply ! Some random responses :

      – Decoding on the A5 (Odroid) was without HW decoder. I failed making it work with ffmpeg (some problems with the filter not parsing the pixel format … go figure). However, all 4 cores were 100% leaving no space for any other processing, mainly splitting in N streams for the N blades.

      – Yep you are 100% correct. We are even thinking about daisy-chaining small ethernet switches from blade to blade to make the connection go up. Though, I am greatly worried about the latency tens of switches would introduce :S
      This is why I did bandwidth tests, as our current ideas would require roughly 50 Mbps per blades.

      – Well then the rockchip chip looks very promising, I must admit T.G. discouraged me quite a lot about those chips … IMO 4.4 kernel is fine, it’s a small price to pay for HW video decoding.

      Yes I do have computations, I will edit the post once they are in good shape. And no, we are closer to 1080p60 (yeah our previous 4K60 was … an extremely worst case scenario)

      – Even for mechanical constraints, we don’t want RJ45 jacks … Moreover, most SBCs I found had Wifi through SDIO, and I have no idea what we can expect from those bandwidth wise … At least the FIreFly RK3399 has 4x PCIe, leaving room for both a Wifi card and an additional Gbps ethernet, should we need it.

      – Interesting, most of the SBCs with 5GHz were also AC wifi !

      Nice week to you too ! 🙂

  • Alexis

    About the data throughput: which resolution are you envisaging ?

    • Tuetuopay

      Right now, we are looking at 128 LEDs per blade with 42 blades. At 73615 voxels per layer, we have 3 091 830 voxels on each frame. See the computations on our wiki for the details (this is the “smart” way).

      However, don’t take this as the final answer, as the mechanic told us this morning blades cannot be done. We are looking at a HARP way right now.

      • Félix

        Vous le comptez comment vos voxels ? Ça me parait pas beaucoup 73615 à partir de 128 leds !?
        Et vu tous les chiffres très ambitieux que vous annoncez ce n’est pas un peu dommage de rester à 256 pixels de large ? Je pense que c’était un des trucs les plus dommages de roseace… on voyait un peu les cercles formés par les leds, en doublant la résolution ça serait surement bien (ça marche aussi en divisant le diamètre du coup selon le format voulu pour votre POV).

        Au passage pour les LEDs je vous conseille d’aller vers celle les plus équilibrées entre les 3 couleurs. Donc dans votre liste je dirais plutôt la 1ère.

        Pour les blades que le mécanicien ne peut pas fabriquer je ne comprends pas bien ? Les blades c’est pas directement vos PCB de LEDs ?

        • Tuetuopay

          There it is a shame the wiki is not public. We are not doing a square image just laid down on a layer. We are using a polar voxel space, where a voxel is a “polar cube”. However, if we keep the same amount of voxels on the outer circles as on the inner, we end up with a way too high voxel density on the inside.

          The 73k figure comes from a computation where we try to have voxels that have as much the same length along the radius (circa 1.4mm since we plan to stagger them) and along the circle. This immensely reduces the total voxel count (circa 2M without this optimization).

          Regarding the resolution and the LED count, we’d love to make much more than 128 LEDs (and we may end up with even less the HARP way). However, we are limited by the physical size of the LEDs. Any hints, genius or samples are welcome!

          1st led, I keep this in mind.

          Yes blades are “bare” PCBs just like ROSEace. However, he cannot manufacture all the rest : base, axis, blade fixation, etc… And even if he could, he would still not be able to do it accurately enough to spare us the aluminum stud ROSEace had behind their blade.

  • Alexis

    Glad to see the computations on your wiki (posted 24mn ago) 🙂

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>