Board Farm

Here is some information about board farms.

= Community = At the Embedded Linux Conference Europe 2017 Andrew Murray held a BoF session titled Farming Together. The purpose of this BoF was to bring together people that are actively working on board farms to create a community, to knowledge share and to start a collaborative effort.

Add your name and contact information if you would like to be notified when an e-mail list is created, or are generally interested in this topic:
 * Andrew Murray -  *
 * Tim Bird -  *
 * Robert Schwebel  *
 * Arnout Vandecappelle - -- doesn't have a board farm but is interested
 * Mirza Krak -  *
 * Alan Bennett - 
 * Geert Uytterhoeven -  *
 * Andrea Scian - 
 * Kieran Bingham -  *
 * Jan Lübbe -  *
 * Marco Cavallini - 
 * Kevin Hilman - 
 * Bill Mills - 
 * Tom Gall - 
 * Stephano Cetola - 
 * Mike Holmes - 
 * Matteo Vit - 
 * Attie Grande - <attie.grande (at) argentum-systems.co.uk>
 * Roland Hieber <r hieber <at> pengutronix de>
 * Tim Orling <ticotimo (at) gmail (dot) com>
 * Ryan Arnold <ryan arnold <at> linaro org>
 * Behan Webster <behanw (at) converseincode (dot) com> *
 * Michal Simek <monstr (at) monstr (dot) eu>
 * Krzysztof Kozlowski <krzk (at) kernel (dot) org>
 * Jagan Teki <jagan (at) openedev (dot) com>
 * Heiko Schocher <hs (at) denx (dot) de>
 * Khiem Nguyen <khiem.nguyen.xt (at) renesas.com>
 * Amit Kucheria <amit.kucheria (at) verdurent.com>
 * Harish Bansal <harish.bansal (at) timesys.com>

* = have seen this person on the e-mail list, or already subscribed.

Mailing list
Discussions on this topic have started at on the "Automated Testing" mailing list of the Yocto Project
 * See https://lists.yoctoproject.org/g/automated-testing
 * (was https://lists.yoctoproject.org/listinfo/automated-testing)

Next meeting
To be determined.

Maybe at Plumbers 2018, Connect, or ELCE 2018

See Automated Testing Summit

= Actions =
 * define API between test framework and DUT controller layer?
 * pduclient?
 * labgrid?
 * ebfarm?
 * ttypersist: provides an application a fake socket for misbehaving ttys
 * ttc
 * libvirt
 * r4d
 * survey of existing tools, hardware, practices
 * create a definition for an "automated testing" stack - see Automated Testing Stack
 * start with definitions from SLAV?
 * identify different areas of test automation operation

= Presentations = If you know of a presentation on this topic, please add it below:
 * "Test Standards - Can Fuego, Lava and others agree?" by Tim Bird at Linaro Connect SFO 2017
 * description: Tim proposes several areas of standardization collaboration between different Linux test initiatives
 * Slides and Video
 * "Herd Your Boards, Become a Farmer" by Geert Uytterhoeven at ELCE2016
 * [[Media:Herd_Your_Boards.pdf | Slides]] and Video
 * "Automation beyond Testing and Embedded System Validation" by Jan Luebbe (Pengutronix) at ELCE2017
 * [[Media:PRE-trunk-ELCE-Automation-beyond-Testing.pdf | Slides ]] and Video
 * Introduction to kernelCI.org
 * Blog Article and Video
 * Piece of cake - testing remote embedded devices made easy with MuxPi by Paweł Wieczorek at FOSDEM 2018
 * Slides and Details

= Best Practices =

= Issues/Requirements =

= Misc / Tools =
 * New horizontally scalable CI system built with Containers and container orchestration technologies in mind - https://github.com/OpenSourceFoundries/jobserv / http://connect.linaro.org/resource/sfo17/sfo17-217/

= Hardware =

SD muxers

 * USB-SD-Mux by Pengutronix, now available
 * SD-MUX by Tizen (deprecated - see MuxPi)
 * MuxPi by Tizen (MuxPi is the successor to SD-MUX)
 * IO-CX by Timesys

Kevin Hilman mentioned (at ELCE 2017) wifi SDCards as a way to handle the SD mux problem. Was he referring to something like these? http://techpp.com/2015/04/28/wifi-sd-cards-camera/

power control

 * usb board with switchable power
 * ykush - 3 port USB power switcher - https://www.yepkit.com/products/ykush
 * Web Power Switch by Digital Loggers
 * control program by Tim Bird: [[File:Powerswitch-set.sh]]
 * Energenie Power Management System (USB controlled 4-way power switch +2 always on) (UK)
 * uhubctl USB hub per-port power control

relays/buttons

 * 8-Channel Opto-Isolator Board for Board Farm Control
 * DIN Relay IV by Digital Loggers
 * This uses the same control protocol as the Web Power Switch mentioned above
 * KMTronic 8-channel IP relay controller
 * Raspberry Pi relay board
 * Relays over ethernet

multi-function

 * BayLibre ACME cape - power and temperature measurement with different probes (USB, Jack power cable, HE10)
 * See https://gitlab.com/baylibre-acme/acme-hardware-docs for design docs
 * Sony_Debug_Assist_board - Open Hardware design by Sony for multi-function DUT controller (USB, serial, power, buttons)
 * connection to host = USB serial
 * elinux page about v2 of the board (how to use) is here: Sony_Debug_Assist_board
 * github page with source code, schematics, gerber files, etc. is at: https://github.com/sonyxperiadev/CDB-Assist
 * schematics here: https://github.com/sonyxperiadev/CDB-Assist/blob/master/Hardware/CDBAssist-v3.1-Schematics.pdf
 * MuxPi by Tizen Open Hardware design by Samsung for multi-function DUT controller (serial, power, buttons, network?)
 * connection to host = network
 * Remote Testing Environment - Open Hardware design by 3mdeb for multi-function DUT controller (power, programmer, serial)
 * connection to host = network
 * github page for RTE schematics (rev 1.0.0)
 * github page with meta-rte layer based on Yocto Project
 * github page for RTE REST API controller (beta)
 * BCU/2 board - Open Hardware design by Geert Uytterhoeven for multi-function DUT controller(serial, power, buttons, gpio, i2c, etc.)
 * uses a teensy board
 * It's a small board to control and monitor the operation of two development boards.
 * hardware files: https://github.com/geertu/pcb-bcu2
 * software files: https://github.com/geertu/teensy3-bcu2
 * connection to host = USB
 * IO-CX by Timesys (Multi-function DUT control: SD-MUX, USB-MUX, GPIO, I2C)

USB mega-ports
A few people are using these:
 * Manhattan Mondohub 28-port USB hub


 * PowerPad15S USB hub used by Lava

USB switchers

 * LAVA-LMP USB - allows switching USB connections to a DUT
 * Extron USB Switcher
 * 2101 USB Connection Exerciser

HDMI testing

 * SDI/HDMI grabber

unsorted LAVA hardware helpers
See https://lava.coreboot.org/static/docs/v1/lmp_test_guide.html

Possibly https://github.com/GlasgowEmbedded/glasgow to control various buses (via FPGA).

= Software =
 * Labgrid : http://labgrid.readthedocs.io - http://labgrid.org
 * CI-RT   : https://ci-rt.linutronix.de
 * R4D     : https://github.com/ci-rt/r4d - https://github.com/ci-rt/libr4d
 * Libvirt : https://github.com/ci-rt/libvirt-debian
 * Jenkins plugin : https://github.com/ci-rt/libvirt-slave-plugin
 * ttc     : https://github.com/tbird20d/ttc - documentation at: Ttc_Program_Usage_Guide
 * tbot    : https://github.com/hsdenx/tbot - http://www.tbot.tools/main.html
 * SLAV stack : ??? (Pawel's thing - see [[Media:Piece_of_cake.pdf]]

= Services =
 * TimeSys Board Farm Cloud: See https://www.timesys.com/pdf/Timesys-On-Premises-Board-Farm-Cloud.pdf
 * Good Device Labs - CanaryQA

= Notes =
 * spend money on USB serial adapter cables - cheap adapters sometimes drop connections and are a pain to debug
 * FTDI cables seem to work well.

= Farm Survey = Tim Bird is conducting a survey of Farm hardware (DUT controllers). See this page: Board Farm Survey