Power-cycling a board¶
You want to power-cycle one board’s Pi, at welland or at ps1: it has hung, or it must boot a new NFS root. Cutting the Pi’s PoE on its switch port is the only remote reset; there is no other power control. The Pi loses everything it held (its root is read-only with a tmpfs on top, Netboot and the NFS root), and anyone using the board loses their session. Visitors use the boards at any time; that is expected, so cut a port only when it is needed.
At welland¶
First, check who is on the port. The port is in the Pi’s name: pi-sw2-p46 is switch 2, port 46, at
10.21.2.46. On the welland gateway, that address must be answered by the MAC of the Pi you mean (the table of
6 October 2026 on Hosts and boards at welland gives each
port’s MAC):
$ ip -4 neigh show 10.21.2.46
$ grep ' 10.21.2.46 ' /var/lib/misc/dnsmasq.leases
A lease line means a device on that port took or renewed the address within the lease time (5 minutes). The
gateway releases a port’s leases when its link goes down or bounces, when the site power-cycles it or switches it
off, and when the switch poller finds a lease on a port that has read down twice (switch-poller.service,
fpgas-release-port-lease; each release is a fpgas-lease-release line in the gateway’s journal). A Pi on a root
with systemd-networkd renews its lease about every 150 s, so its line stays while it is up
(The network after boot). On an older root a netbooted Pi never renews, and
its line exists only for the first 5 minutes after it boots (fpgas.online-infra issue #230), so check the neighbour
entry first. The neighbour entry names the MAC that last answered; it can stay after the
Pi has gone (it did while ports were off on 6 October 2026), so it identifies the board but does not prove it
is up. If another MAC answers, stop: something was moved.
From the board’s page. A board page on welland.fpgas.online that has a Reset button power-cycles its
port: off, half a second, on (src/snmp_switch/views.py in fpgas.online-poe, main fcb4a2a). It refuses a port
that is not a board the site offers, and a second cycle of the same port within 60 seconds by default
(fpgas.online-poe README.md). The switch settings it needs reached the welland gateway with
fpgas.online-infra PR #84, merged 2026-09-14. The NeTV2 hosts have no board page.
From the gateway, as root, with the switch’s SNMP write community. Both welland switches answer the
standard PoE MIB (pethPsePortAdminEnable, 1.3.6.1.2.1.105.1.1.1.3.1.<port>) over SNMP v2c: the
fpgas.online coordinator switched welland ports off and on through it, with fpgas.online-poe’s netgear_switch
library, after the NFS root updates of 5 and 6 October 2026. The communities are in the vault of
fpgas.online-infra and are rendered, root-only, into /etc/systemd/system/gunicorn.service.d/poe.conf as
FPGAS_SWITCH_COMMUNITY_<switch> (the site role, templates/gunicorn-poe.conf.j2). Never copy one into a
file, a commit or a page.
Switch |
Management address |
Up on it on 6 October 2026 (the gateway’s neighbour table) |
|---|---|---|
1, Netgear GSM7252PS |
10.1.5.23 |
NeTV2 hosts on ports 10, 12, 14, 16, 18; the Fomu host on 17; an Acorn host on 38 |
2, Netgear S3300-52X-PoE+ |
10.1.5.11 |
Orange Pis on 19, 21, 22, 24; their hub host on 30; Tiny Tapeout FPGA hosts on 33, 35, 36; Acorn hosts on 46, 47 |
A remedy written for an Acorn host covers switch 2 only, because every Acorn at welland is on switch 2, the S3300.
Switch 1, the GSM7252PS, carries Pis of its own (the NeTV2 hosts and the Fomu), and fleet Pis are PoE-powered, so it
supplies PoE too and has its own separate write community: a board on switch 1 needs that one, not the S3300’s (from
the earlier docs page, not re-checked). Run the commands below from the gateway, which reaches the switch management
network (10.1.5.0/24) over its default route, the same reachability fpgas-switch-setup needs.
Run the cycle as one line, so that a dropped connection cannot leave the port off, and read the port before and after:
$ # the switch, its write community (read it from poe.conf; it is not printed here), and the port
$ export SW=10.1.5.23 COMMUNITY='<switch-write-community>' PORT=14
$ OID=1.3.6.1.2.1.105.1.1.1.3.1.$PORT
$ # read: admin state (1 on, 2 off) and delivery (3 = delivering power)
$ snmpget -v2c -c "$COMMUNITY" -Ovq $SW $OID 1.3.6.1.2.1.105.1.1.1.6.1.$PORT
$ # off, a few seconds, on
$ snmpset -v2c -c "$COMMUNITY" $SW $OID i 2 && sleep 5 && snmpset -v2c -c "$COMMUNITY" $SW $OID i 1
$ # read again: expect 1, then 3 once the Pi draws power
$ snmpget -v2c -c "$COMMUNITY" -Ovq $SW $OID 1.3.6.1.2.1.105.1.1.1.6.1.$PORT
This snmpset line has not been run as written by fpgas.online; the power cycles of 5 and 6 October 2026 went
through fpgas.online-poe’s netgear_switch library instead. If the line stopped after “off”, run the “on”
snmpset by itself, then read again. The port number is the
switch port (p in the Pi’s name), not a VLAN or an address. The Pi is back when its SSH port answers: from
the gateway, nc -z -w 3 10.21.<switch>.<port> 22 (10.21.1.14 for switch 1, port 14).
This is the same standard PoE MIB that the poe_reset of the test-designs verify_hardware.py
harness uses; it differs from the ps1 switch, which answers
only a Netgear-private OID (The ps1 gateway and switch; from the earlier docs page, not re-checked).
poe.sh and allpoe.sh from fpgas.online-poe do not work at welland (The PoE scripts): the snmp.yml task that writes their
settings is skipped on a per-port gateway, by design (its comment in fpgas.online-infra, main).
At ps1¶
At ps1 the gateway, its switch and its power-cycling tool belong to the ps1 site operator, not to fpgas.online. The procedure, with the checks to make first, is on The ps1 gateway and switch: power control.
How long the board is gone¶
Cycle a port before believing a small load. On 2026-08-28 switch 2’s port 16 had nothing connected, yet the
switch reported it delivering 1.1 to 1.4 W for days. A PoE off then on cleared the reading to searching and
0 mW, so it was a stale PoE-controller reading (docs/hardware/2026-08-28-orange-pi-h3-boards.md, “Ports still
unexplained”).
The Pi netboots again: a kernel and a root over the network, not a resume from disk. The test automation
allows about two minutes from power-on to SSH (docs/verify-hardware.md in fpgas.online-test-designs). Acorns at
welland records, from its reads of September
2026, that a Pi 5 there takes more than 90 seconds, and that a hung one draws about 0.4 W on its port instead of
about 8 W; not measured again since. Earlier, on 2026-09-06, cycling all five NeTV2 ports on switch 1 and watching
them netboot back took about 48 s; a Pi 3B+ is gone roughly a minute (from the earlier docs page, not re-checked).
After an NFS root update¶
A Pi that booted before the root was replaced fails to open the new files (ESTALE); Netboot and the NFS
root says why. Each Pi’s watchdog reboots it on its own once it sees a newer root: after the
update of 6 October 2026 at welland, the Orange Pis, which were left to it, were back by 08:57, 36 minutes after
the 08:21 swap. To have a board back sooner, power-cycle its port as above; on 6 October 2026 twelve
power-cycled boards were all back within 9 minutes.