Difference between revisions of "SpaceAPI:Button"

From Technologia Incognita
Jump to: navigation, search
(LEDE with in-kernel hardware float emulation)
m (Happy Update)
Line 44: Line 44:
A custom LEDE/OpenWRT should not be needed anymore in the future.
A custom LEDE/OpenWRT should not be needed anymore in the future.
<del>==== LEDE with in-kernel hardware float emulation ====
==== LEDE with in-kernel hardware float emulation ====
Follow the steps at:
Follow the steps at:
Line 70: Line 70:
   # resulting sysupgrade image:
   # resulting sysupgrade image:
   # bin/targets/ar71xx/generic/lede-ar71xx-generic-carambola2-squashfs-sysupgrade.bin
   # bin/targets/ar71xx/generic/lede-ar71xx-generic-carambola2-squashfs-sysupgrade.bin
==== Compiling spacestate ====
==== Compiling spacestate ====

Revision as of 10:20, 5 April 2019

Spacebutton acta.jpg
Participants Brainsmoke, Guido, Realitygaps
Skills OpenWRT, basic electronics
Status Finished
Niche Electronics
Purpose Infrastructure

Spacebutton mkII


The current Space button consists of:

  • an 8Devices Carambola2 dev board, running a custom LEDE(was OpenWRT) linux system
  • an industrial stateless button.
  • a Techinc Badge
  • a wired Internet connection
  • a USB power adapter / mini-USB cable




The Carambola 2 runs a custom compiled LEDE (formerly OpenWRT) firmware with a go program for the logic.


Compiling LEDE

Sadly, precompiled packages of Openwrt/LEDE do not support MIPS hardware float emulation out of the box, and the (default) Go compiler does not (yet) support software float.

Solution: compile LEDE with in-kernel hardware float emulation

Happy Update

Go 1.10 https://golang.org/doc/go1.10 now has support for MIPS w. soft-float, A custom LEDE/OpenWRT should not be needed anymore in the future.

LEDE with in-kernel hardware float emulation

Follow the steps at:


 apt-get install subversion g++ zlib1g-dev build-essential git python rsync man-db
 apt-get install libncurses5-dev gawk gettext unzip file libssl-dev wget
 git clone https://git.lede-project.org/source.git lede
 cd lede
 git checkout -b lede-17.01
 ./scripts/feeds update -a
 ./scripts/feeds install -a
 make menuconfig
 # select Target System -> Atheros AR7xxx/AR9xxx
 # select Target Profile -> Carambola2 board from 8Devices
 make kernel_menuconfig
 # select Kernel type -> [*] MIPS FPU Emulator
 # resulting sysupgrade image:
 # bin/targets/ar71xx/generic/lede-ar71xx-generic-carambola2-squashfs-sysupgrade.bin

Compiling spacestate

 GOARCH=mips go build -ldflags="-s -w"
 GOARCH=mips GOMIPS=softfloat go build -ldflags="-s -w"

Techinc Logo State Indication code


 make fuses
 make flash

Spacebutton mkI (This spacebutton is no longer in use!!!!!)

Nanode code


(and EtherCard fork) https://github.com/techinc/ethercard

The code uses DHCP to obtain an IP address and find a gateway.


The button is a circuit breaker. Connected to pin 3, it pulls this input pin to ground when not pressed.

The code enables the internal pull-up resistor, so no external one is needed.

The LED is connected to pin 5, also using a pull-down circuit. (So the led should be *on*, when pin 5 is low.)


The LED blinks:

  • every four seconds: No link
  • every two seconds: No DHCP
  • every second: No DNS
  • twice a second: Changing the space state, but no response yet from the server
  • two seconds on, two seconds off: 'upstream' space state unknown.


The nanode is now powered through a USB-port.

DO NOT power it using 9V. There are some issues with the voltage regulator (which is not used when fed through (5V) USB.)

Notification App

An Android app is available to monitor the current state of the space and notify when it changes. The source code is available on GitHub: Source

The app can be downloaded from Google Play or GitHub

Spacebutton iterations

Spacebutton tmpinc.jpg Spacebutton acta.jpg