Giter Site home page Giter Site logo

buildroot-sdr's Introduction

Buildroot-SDR

Buildroot modules used for SDR and ADSB, directed for use on RaspberryPi.

This is an external pack for Buildroot. It is intended to build a base image suitable for NetBooting. My current personal build (to be shared in a different repo later) runs aprox 16M (6.7 after gzip) including:

  • busybox
  • uclibc
  • ntpd
  • dropbear
  • uchdpc
  • nginx (might be replaced later with something smaller?)
  • collectd
  • strace (for debugging)
  • rtl_sdr tools
  • fr24feed (Flightradar24)
  • bash (for fr24feed, see below)
16248832 May 18 13:49 rootfs.cpio
 6924676 May 18 13:49 rootfs.cpio.gz

Simple start

  1. Clone/Install BuildRoot
  2. Clone this repository in a seperate directory
  3. Add this repo to buildroot by using external customization

Working

dump1090-mutability

This works with RTL devices, and provides json stat files to /usr/share/dump1090 - It also provides a symlink from /usr/share/dump1090 for use with nginx

This is specifically the mutability fork of dump1090

Optionals

  • nginx

flightradar24

This will pull ADSB traffic from dump1090 and send to flightradar24 - note, the API key is hard coded and needs to be set.

Dependancies

  • bash

Buggies

  • Shells out to bash to run ping and hostname, this is stupid and bad. This also means bash is a requirement, and hostname will always fail since busybox hostname isn't the same as regular hostname

Not Working

RRD/Collectd for stats from dump1090

In order to collect stats from dump1090, the dump1090-tools uses python. In order to get these stats into collectd, the python bindings are compiled into collectd. Unfortunatly, this doesn't currently work in Buildroot.

Options

  • Make python bindings work in build root -- This isn't trivial. Started down this rabbit hole and found a blocker -- This would require python and it's bindings increasing the size of the image
  • Build a pure C plugin for collectd that can be added and compiled -- Non-trivial as it requires C programming -- This is a better option as it wouldn't require python adding to the size of the image

FlightAware / PiAware

PiAware is FlighAwares tools to send data to their systems. It is TCL based and would require TCL interpreter be added to the image. Secondly, they have a tcllauncher project that is used to launch the program. tcllauncher is currently the stumbling block for this project as it did not build cleanly.

Options

  • Get tcllauncher building and continue down the rabbit hole -- Unknown requirements to make this work -- This requires the TCL packages be installed, adding to the size of the image
  • Build a C or GO option -- This would require reverse engineering how to communicate with FlightAware -- C and GO are both cross-platform, this means a smaller binary would be made instead of interpreted languages

Future

Items to work on for the future include

  • Make the build smaller: The goal is netboot, so smaller is better
  • Fix the not-working items from above
  • Make it easier to config

Configs

The goal here is to have a list of places that might store configs. The question becomes, where and how do you access them.

  • SDCard - These go bad, so remote deployments become a pain if they go bad
  • Network - This is a good option, but how do you identify where to get the configs -- HTTP -- TFTP

buildroot-sdr's People

Contributors

coolacid avatar

Stargazers

 avatar

Watchers

 avatar  avatar

buildroot-sdr's Issues

The bits and pieces

Here we track all the bits and pieces we need - If you want a bit or a piece, comment here

  • dump1090 -- Using mutability fork
  • flightradar23
  • flightaware
  • collectd/rrd
  • MultimonNG - Digital Decoders
  • LTE-Cell-Scanner

LTE-Cell-Scanner - Ongoing work

Something is broken:

-- The C compiler identification is GNU 6.4.0
-- The CXX compiler identification is unknown
-- Check for working C compiler: /home/Repos/3.NARD/buildroot/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-gcc
-- Check for working C compiler: /home/Repos/3.NARD/buildroot/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
CMake Error at CMakeLists.txt:8 (PROJECT):
  The CMAKE_CXX_COMPILER:

    /home/Repos/3.NARD/buildroot/output/host/bin/arm-buildroot-linux-uclibcgnueabihf-g++

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!

dump1090 web pages

Need to add some conditionals into the mk file.

Depending on what web server is configured (if any) link their respective directories instead of hard coded.

Pull config from $x

We use udhcpc for getting IP information. We can place scripts in /usr/share/udhcpc/default.script.d to configure things after we get an IP address, but before services are started.

This project should implement some way of using UDHCPC variables and downloading the configs and applying those configs.

Note the following ENV variables that will help:

	tftp		- The TFTP server name

We can probably pull via HTTP against the TFTP IP, (or even TFTP?) and apply the configs over top of /etc?

https://udhcp.busybox.net/README.udhcpc

[thttpd] Outside root issue

The requested URL '/dump1090/' resolves to a file outside the permitted web server directory tree.

This is because we symlink the directory. This is solvable. Just need to "solve" it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.