The next-generation BBS software

  • Old and new a 1980s computer can join
  • Real hardware a chip on your shelf
  • Free software GPL v3 or later
  • No internet needed a local network is enough
  • You write the rules and you are the appeal
  • No ads no one sells your time
  • No platforms nobody in the middle
  • No hosting fees it runs at your place
  • No outside costs your power, your Wi-Fi
  • No cloud nobody else's server

Lights

The Waveshare S3 needs none of this. Its drive light is the LED on the board, and its screen draws the strip: the S3.

Two lights for an ESP32 dev board in a case: a drive light, one pixel that shows the board's storage at work, and a strip of pixels, ten as shipped, that shows who is on. Both are optional, and both stay off until you give them a pin. Wire the strip, give it a pin, and each caller who dials in lights a pixel of their own.

What you need

The drive light

One pixel. Amber when the SD card is read or written, cool white for the board's own flash, a slow red blink after a storage error, and a dim glow in between. Every flash is held long enough to see, so a read that takes two milliseconds still shows.

ESP32VINVIN, 5 V5VGNDGNDGNDD13GPIO13DIN330 to 470 Ω100 nFESP32 dev boardWS2812B pixelOne pixel draws about 60 mA: VIN on USB is fine.Resistor and capacitor at the pixel end.The pin is set on CONFIG lights.
Pixel pinESP32 pinNotes
5V or VCCVINThe 5 V from USB. One pixel draws at most about 60 mA, which it handles
GNDGND
DIND13 / GPIO13Through the resistor. GPIO13 has no job at boot

It has four styles, and the colours are the same in each:

The strip

1 to 16 pixels, 10 as shipped, which is one for each caller line.

Give the strip a 5 V supply of its own. Ten pixels at full white draw about 600 mA, and the board needs up to about 400 mA of its own when its radio transmits. That is more than a USB port gives: the voltage sags, the board restarts, and the port may cut the power altogether. Join the supply's ground to the board's ground, connect ground first, and disconnect it last.

ESP325 V supply1 A or more-+DINGND5VGNDD14GND, sharedGPIO14330 to 470 Ω100 nFESP32 dev boardthe strip, 1 to 16Ten pixels at full white: about 600 mA.Their own supply, its ground joined to GND.Resistor at the first pixel. Pin on CONFIG lights.
Strip pinGoes toNotes
5Vthe supply's +Not the board's VIN
GNDthe supply's - and the board's GNDWithout the shared ground the data has nothing to be measured against
DIND14 / GPIO14Through the resistor, at the first pixel

What it shows:

From firmware 1.2.0, a board with a screen can draw both lights on it, over a picture of a machine of your choosing: see skins.

Telling the board about it

LIGHTS───────────────────────────────────────────────────────────────────────────────Plugin enabled no Read level sysop...................................................Write level sysop...................................................Admin level sysop...................................................Drive light GPIO -1......................................................Drive light effect pc......................................................Drive brightness % 10......................................................Strip GPIO -1......................................................Strip effect nodes...................................................Strip brightness % 10......................................................Pixels, by hand [ 10 pixels ]Strip length, pixels 10......................................................Drive colour order GRB.....................................................Strip colour order GRB.....................................................[ Save ] [ Cancel ]Tab or arrows move, Enter is next, Space steps a choice, F1 saves, ESC quits typed: CONFIG lights, firmware 1.2.0-link.17

Log in as the sysop and type CONFIG lights. Switch the plugin on, set Drive pin to 13 and Strip pin to 14, and Strip len to the number of pixels you have. Saving puts it live. Or in the file:

[plugin:lights]
enabled     = yes
drive_pin   = 13
strip_pin   = 14
strip_count = 10

Then type LIGHTS TEST. Every pixel shows red, green, blue and then white, a second each. LIGHTS on its own shows each output's pin, effect, brightness and colour order, and the colours it last sent.

Brightness is a percentage for each output, 10 as shipped. Past 30 is your call, and it is where the strip's draw goes past what USB gives, which is what the separate supply is for.

When it does not work

What you seeWhat it usually means
Nothing lightsThe plugin is off, or the pin is still -1. LIGHTS shows both
Green where the test shows red firstThe pixels send their colours in another order. Set Strip ord or Drive ord to RGB, or try BRG
Random colours, or flickerThe grounds are not joined, or the resistor is missing. A larger capacitor across the strip's supply, 500 to 1000 microfarads, helps a strip that flickers when it changes colour
The board restarts when the strip lights upThe strip is running from USB. Give it its own supply
The SD card or the blue LED stops workingA lights pin took one of theirs. Keep clear of 2 (the activity LED), 0 (the BOOT button) and the card's 5, 18, 19 and 23

The board refuses a pin the flash uses (6 to 11) and one the chip does not have (20, 24 and 28 to 31), and the two outputs cannot share a pin. Since firmware 1.1.0 it also refuses a pin something else on the board already holds, such as the card's or the BOOT button's; the last row is for a board set up before that.