Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add BLE connection support in provisioning loop. #60

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

maxhorowitz
Copy link
Member

Integrate BLE manager into provisioning flows (and test as the default provisioning method).

@maxhorowitz maxhorowitz changed the title BLE provisioning Add BLE connection support in provisioning loop. Feb 3, 2025
@@ -1,35 +1,37 @@
module github.com/viamrobotics/agent

go 1.23.1
go 1.23.5
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder to circle back and ask about dependencies here.

@maxhorowitz
Copy link
Member Author

Feb 03 14:13:10 jeep viam-agent[71438]: 2025-02-03T19:13:10.070Z        INFO        viam-agent        ./main.go:131        config file path: /etc/viam.json
Feb 03 14:13:10 jeep viam-agent[71438]: 2025-02-03T19:13:10.071Z        INFO        viam-agent        ./main.go:156        main config file /etc/viam.json missing or corrupt, entering provisioning mode
Feb 03 14:13:10 jeep viam-agent[71438]: 2025-02-03T19:13:10.079Z        INFO        viam-agent        provisioning/provisioning.go:128        Found NetworkManager version: 1.42.4
Feb 03 14:13:11 jeep viam-agent[71438]: 2025-02-03T19:13:11.137Z        INFO        viam-agent        provisioning/setup.go:134        Using wlan0 for hotspot/provisioning, will actively manage wifi only on this device.
Feb 03 14:13:17 jeep viam-agent[71438]: 2025-02-03T19:13:17.328Z        INFO        viam-agent        provisioning/provisioning.go:219        Default (Single Network) Mode enabled. Will directly connect only to primary network: Viam
Feb 03 14:13:17 jeep viam-agent[71438]: 2025-02-03T19:13:17.330Z        INFO        viam-agent        provisioning/connstate.go:64        Wifi Connected: true
Feb 03 14:13:17 jeep viam-agent[71438]: 2025-02-03T19:13:17.372Z        INFO        viam-agent        provisioning/connstate.go:38        Online: true
Feb 03 14:13:17 jeep viam-agent[71438]: 2025-02-03T19:13:17.372Z        INFO        viam-agent        provisioning/provisioning.go:276        agent-provisioning startup complete
Feb 03 14:13:17 jeep viam-agent[71438]: 2025-02-03T19:13:17.372Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:13:17 jeep viam-agent[71438]: 2025-02-03T19:13:17.372Z        INFO        viam-agent        provisioning/networkmanager.go:606        Background state monitors started
Feb 03 14:13:27 jeep viam-agent[71438]: 2025-02-03T19:13:27.379Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T19:13:37.380Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T19:13:37.567Z        INFO        viam-agent        provisioning/networkmanager.go:176        Starting provisioning mode.
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T14:13:37.568-0500        INFO        viam-agent        peripheral/ble_peripheral.go:54        serviceUUID: ad201111-09d0-4bbe-8d62-b8710e67432d
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T14:13:37.568-0500        INFO        viam-agent        peripheral/ble_peripheral.go:56        charSsidUUID: 912d2222-f4cd-4d22-99ed-b07244eeaab6
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T14:13:37.568-0500        INFO        viam-agent        peripheral/ble_peripheral.go:58        charPskUUID: 8d2e3333-24a8-4a21-83e3-9a899228cd42
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T14:13:37.568-0500        INFO        viam-agent        peripheral/ble_peripheral.go:60        charRobotPartKeyIDUUID: e84d4444-8db2-42eb-90da-0bd30a3ab2b0
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T14:13:37.568-0500        INFO        viam-agent        peripheral/ble_peripheral.go:62        charRobotPartKeyUUID: 101c5555-aff5-4575-963d-404cc9f64a9c
Feb 03 14:13:37 jeep viam-agent[71438]: 2025-02-03T14:13:37.588-0500        INFO        viam-agent        peripheral/ble_peripheral.go:193        started advertising a BLE connection...
Feb 03 14:13:47 jeep viam-agent[71438]: 2025-02-03T19:13:47.380Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:13:57 jeep viam-agent[71438]: 2025-02-03T19:13:57.380Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:14:07 jeep viam-agent[71438]: 2025-02-03T19:14:07.381Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:14:17 jeep viam-agent[71438]: 2025-02-03T19:14:17.382Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:14:27 jeep viam-agent[71438]: 2025-02-03T19:14:27.383Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:14:37 jeep viam-agent[71438]: 2025-02-03T19:14:37.384Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:14:47 jeep viam-agent[71438]: 2025-02-03T19:14:47.384Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:14:57 jeep viam-agent[71438]: 2025-02-03T19:14:57.384Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:15:07 jeep viam-agent[71438]: 2025-02-03T19:15:07.384Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:15:17 jeep viam-agent[71438]: 2025-02-03T19:15:17.385Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:15:27 jeep viam-agent[71438]: 2025-02-03T19:15:27.386Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:15:37 jeep viam-agent[71438]: 2025-02-03T19:15:37.386Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:15:46 jeep viam-agent[71438]: 2025-02-03T14:15:46.163-0500        INFO        viam-agent        peripheral/ble_peripheral.go:96        Received SSID: Viam
Feb 03 14:15:47 jeep viam-agent[71438]: 2025-02-03T19:15:47.386Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:15:57 jeep viam-agent[71438]: 2025-02-03T19:15:57.386Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:16:02 jeep viam-agent[71438]: 2025-02-03T14:16:02.093-0500        INFO        viam-agent        peripheral/ble_peripheral.go:107        Received Passkey: checkmate
Feb 03 14:16:07 jeep viam-agent[71438]: 2025-02-03T19:16:07.387Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:16:17 jeep viam-agent[71438]: 2025-02-03T19:16:17.387Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:16:27 jeep viam-agent[71438]: 2025-02-03T19:16:27.388Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:16:37 jeep viam-agent[71438]: 2025-02-03T19:16:37.388Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:16:44 jeep viam-agent[71438]: 2025-02-03T14:16:44.064-0500        INFO        viam-agent        peripheral/ble_peripheral.go:118        Received Robot Part Key ID: b53ade40-f602-425f-adcf-73b64e4ebe16
Feb 03 14:16:47 jeep viam-agent[71438]: 2025-02-03T19:16:47.389Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:16:57 jeep viam-agent[71438]: 2025-02-03T19:16:57.389Z        WARN        viam-agent        ./main.go:170        waiting for user provisioning
Feb 03 14:17:00 jeep viam-agent[71438]: 2025-02-03T14:17:00.594-0500        INFO        viam-agent        peripheral/ble_peripheral.go:129        Received Robot Part Key: az8rfn964p80sz3s3ij5yfu8d58m9157mz8k0cf0agw1s78m
Feb 03 14:17:00 jeep viam-agent[71438]: 2025-02-03T19:17:00.648Z        INFO        viam-agent        provisioning/networkmanager.go:647        Device config received
Feb 03 14:17:00 jeep viam-agent[71438]: 2025-02-03T19:17:00.648Z        INFO        viam-agent        provisioning/connstate.go:90        Viam Server Configured: true
Feb 03 14:17:00 jeep viam-agent[71438]: 2025-02-03T19:17:00.648Z        INFO        viam-agent        provisioning/networkmanager.go:661        Wifi settings received for Viam
Feb 03 14:17:00 jeep viam-agent[71438]: 2025-02-03T19:17:00.657Z        INFO        viam-agent        provisioning/networkmanager.go:461        Adding/updating settings for network Viam@wlan0
Feb 03 14:17:03 jeep viam-agent[71438]: 2025-02-03T19:17:03.667Z        INFO        viam-agent        provisioning/networkmanager.go:252        Stopping provisioning mode.
Feb 03 14:17:03 jeep viam-agent[71438]: 2025-02-03T14:17:03.669-0500        INFO        viam-agent        peripheral/ble_peripheral.go:211        stopped advertising a BLE connection
Feb 03 14:17:03 jeep viam-agent[71438]: 2025-02-03T19:17:03.669Z        INFO        viam-agent        provisioning/networkmanager.go:288        Activating connection: Viam@wlan0
Feb 03 14:17:07 jeep viam-agent[71438]: 2025-02-03T19:17:07.390Z        INFO        viam-agent        ./main.go:188        Viam Agent Version: custom Git Revision: 690b4a81e28bf985d4dad44136ed9541fc81c591
Feb 03 14:17:17 jeep viam-agent[71438]: 2025-02-03T19:17:17.682Z        INFO        viam-agent        provisioning/networkmanager.go:325        Successfully activated connection: Viam@wlan0
Feb 03 14:17:22 jeep viam-agent[71438]: 2025-02-03T19:17:22.396Z        ERROR        viam-agent        agent/manager.go:467        fetching viam-agent config: rpc error: code = DeadlineExceeded desc = context deadline exceeded
Feb 03 14:17:22 jeep viam-agent[71438]: 2025-02-03T19:17:22.396Z        INFO        viam-agent        agent/subsystem.go:285        new version () found for viam-agent
Feb 03 14:17:22 jeep viam-agent[71438]: 2025-02-03T19:17:22.396Z        ERROR        viam-agent        ./main.go:225        downloading viam-agent subsystem: unsupported url scheme
Feb 03 14:17:22 jeep viam-agent[71438]: 2025-02-03T19:17:22.684Z        INFO        viam-agent        agent/subsystem.go:285        new version (0.13.0) found for viam-agent
Feb 03 14:17:30 jeep viam-agent[71438]: 2025-02-03T19:17:30.843Z        INFO        viam-agent        agent/subsystem.go:355        viam-agent updated from  to 0.13.0
Feb 03 14:17:30 jeep viam-agent[71438]: 2025-02-03T19:17:30.865Z        INFO        viam-agent        viamagent/viamagent.go:130        writing systemd service file to /usr/local/lib/systemd/system/viam-agent.service
Feb 03 14:17:30 jeep viam-agent[71438]: 2025-02-03T19:17:30.866Z        INFO        viam-agent        viamagent/viamagent.go:172        Install complete. Please (re)start the service with 'systemctl restart viam-agent' when ready.
Feb 03 14:17:30 jeep viam-agent[71438]: 2025-02-03T19:17:30.990Z        INFO        viam-agent        agent/subsystem.go:285        new version (0.60.1) found for viam-server
Feb 03 14:17:39 jeep viam-agent[71438]: 2025-02-03T19:17:39.051Z        INFO        viam-agent        agent/subsystem.go:355        viam-server updated from  to 0.60.1
Feb 03 14:17:39 jeep viam-agent[71438]: 2025-02-03T19:17:39.089Z        INFO        viam-agent        viamserver/viamserver.go:125        Starting viam-server
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.388Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         ALSA lib pcm_asym.c:105:(_snd_pcm_asym_open) capture slave is not defined
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.393Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         ALSA lib pcm_asym.c:105:(_snd_pcm_asym_open) capture slave is not defined
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.452Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         Cannot connect to server socket err = No such file or directory
Feb 03 14:17:40 jeep viam-agent[71438]:         Cannot connect to server request channel
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.454Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         jack server is not running or cannot be started
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.455Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Feb 03 14:17:40 jeep viam-agent[71438]:         JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.462Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.470Z        ERROR        viam-agent        unstructured output:
Feb 03 14:17:40 jeep viam-agent[71438]:         ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.513Z        INFO        rdk        config/logging_level.go:38        Log level initialized: info
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.514Z        INFO        rdk        server/entrypoint.go:94        Viam RDK        {"version":"v0.60.1","git_rev":"e3f5b8d13a8e1ef9230a53ce00fba9ca7df986d9"}
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.514Z        INFO        rdk        server/entrypoint.go:81        Starting viam-server with following environment variables        {"HOME":"/root"}
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.642Z        INFO        rdk        config/platform.go:181        platform tags        {"tags":"distro:debian,os_version:12,codename:bookworm,pi:5,pifull:5B"}
Feb 03 14:17:40 jeep viam-agent[71438]: 2025-02-03T19:17:40.816Z        WARN        rdk        config/reader.go:324        No cached config, using cloud TLS config.
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.032Z        INFO        rdk        config/config.go:1205        Noisy log deduplication is now enabled
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.033Z        INFO        rdk        impl/local_robot.go:1271        (Re)configuring robot
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.033Z        INFO        rdk.resource_manager        impl/resource_manager.go:725        Now configuring resource        {"resource":"rdk:service:motion/builtin"}
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.034Z        INFO        rdk        impl/local_robot.go:1324        Robot (re)configured
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.044Z        INFO        rdk.networking        rpc/server.go:611        Running external signaling        {"signaling_address":"app.viam.com:443","for_hosts":["agentprovisioningtestrpi5-main.vi871f7hs9.viam.cloud"]}
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.045Z        INFO        rdk.networking        rpc/server.go:643        Running internal signaling        {"signaling_address":"[::]:35649","for_hosts":["agentprovisioningtestrpi5-main.vi871f7hs9.viam.cloud","agentprovisioningtestrpi5-main.vi871f7hs9.local.viam.cloud","agentprovisioningtestrpi5-main.vi871f7hs9.local.viam.cloud:8080"]}
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.047Z        INFO        rdk        web/web.go:455        serving        {"url":"https://agentprovisioningtestrpi5-main.vi871f7hs9.local.viam.cloud:8080","alt_url":"https://0.0.0.0:8080"}
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.047Z        INFO        viam-agent        viamserver/viamserver.go:185        healthcheck URLs: https://agentprovisioningtestrpi5-main.vi871f7hs9.local.viam.cloud:8080 https://localhost:8080
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.047Z        INFO        viam-agent        viamserver/viamserver.go:186        viam-server started
Feb 03 14:17:41 jeep viam-agent[71438]: 2025-02-03T19:17:41.129Z        INFO        rdk.package_manager        packages/deferred_package_manager.go:143        cloud package manager created asyncronously

@@ -88,6 +103,9 @@ func NewProvisioning(ctx context.Context, logger logging.Logger, updateConf *age

mainLoopHealth: &health{},
bgLoopHealth: &health{},

muProvisioningMethod: sync.Mutex{},
provisioningMethod: provisioningMethodBLE,
Copy link
Member

@ale7714 ale7714 Feb 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI i'll confirm with Eliot which one should be the default. My instinct says BLE but will confirm


const (
provisioningMethodHotspot provisioningMethod = "WiFi"
provisioningMethodBLE provisioningMethod = "BLE"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call this bluetooth. For users, setting the configuration it will be more obvious what bluetooth means.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants