This pretty accurately sums up Raspberry Pi in a nut shell. If it stops working for no reason - it’s probably just a broken board
I’ve tested this out and it works for me, tho i have no idea if wpa_supplicant actually uses the configured settings. How are you checking? Did you try this on the new board just in case it was caused by the broken rpi3?
Now testing on v8.0.0-rc55 from the CI .IMG file from GitHub.
Ahhh, well, that’s one small step for FarmBot’ters Regulatory Domain for Wi-Fi - works !
but a few things now broken ( looks like a skew in a DB schema )
SSH Console no longer works . . seems to ignore the configured public key
On the WebApp Device page, the little pop-down from the FARMBOT OS version field no longer show the Distribution node name
On same pop-down, WiFi Strength is N/A but I’m on Wi-Fi !
Had a 45 minute outage of Wi-Fi . . bot reconnected Ok, but the yellow SYNC NOW button on the top common bar of the WebApp . . doesn’t do anything !
Last Log is Preloaded auto sync complete
I suspect this actually caused the other two problems listed. Investigating this right now, but i plan on depreciating this in favor of a new solution we are cooking up, so keep an eye out for that in the future. (probably post v8 release)
I’ve just released some fixes in RC56 that should fix the following things:
reboot causing firmware to not open
wifi reporting to the frontend
node_name reporting
ssh console
I’ve been doing this for a pretty long time. I’m wondering if your network/router is causing some incompatibilities such as with DHCP names or mdns etc.
Hmmmm . . I think you’re probably right about that . . I think the new MAC address from the replacement RPi3B+ board was the factor that made things seem to work again. Back to the drawing board for me on that one.
The issue seems to stem from platform/target/ssh_console.ex not using the shiny, new managed FarmbotCore.Asset.PublicKey but rather the older mechanism of the authorized_keys env var from :nerves_firmware_ssh app.
defp start_ssh(port, decoded_authorized_keys) when is_list(decoded_authorized_keys) do
# Reuse keys from `nerves_firmware_ssh` so that the user only needs one
# config.exs entry.
nerves_keys =
Application.get_env(:nerves_firmware_ssh, :authorized_keys, []) |> Enum.join("\n")
decoded_nerves_keys = do_decode(nerves_keys)
cb_opts = [authorized_keys: decoded_nerves_keys ++ decoded_authorized_keys]
# Reuse the system_dir as well to allow for auth to work with the shared
# keys.
:ssh.daemon(port, [
{:id_string, :random},
{:key_cb, {Nerves.Firmware.SSH.Keys, cb_opts}},
{:system_dir, Nerves.Firmware.SSH.Application.system_dir()},
{:shell, {Elixir.IEx, :start, []}}
])
end
This should be using both mechanisms. Will inspect further in the future
Ummm . . @connor, unless you can wait until the Xmas after next (!) I think this one really belongs to people who know the Front-End <–> Back-End architecture intimately