Support newer Ray-Ban Meta glasses: migrate DAT SDK 0.4.0 → 0.7.0#65
Open
DareDev256 wants to merge 1 commit into
Open
Support newer Ray-Ban Meta glasses: migrate DAT SDK 0.4.0 → 0.7.0#65DareDev256 wants to merge 1 commit into
DareDev256 wants to merge 1 commit into
Conversation
The pinned DAT SDK 0.4.0 only supports Ray-Ban Meta firmware up to ~V20-V22 (per Meta's Version-Dependencies matrix). Newer glasses (e.g. the 2026 frames running V125-generation firmware, DAT runtime 0.7.0.10.0) are never discovered: registration succeeds and audio works, but devicesStream stays empty, AutoDeviceSelector never emits, and requestPermission(.camera) throws .noDevice. Reported widely (issues #200, #207, #201). This migrates the app to DAT SDK 0.7.0 and its session-based device model: - pbxproj: meta-wearables-dat-ios 0.4.0 -> 0.7.0 - StreamSessionViewModel: migrate StreamSession -> wearables.createSession( deviceSelector:) -> DeviceSession; wait for session .started before session.addStream(config:) -> MWDATCamera.Stream (addStream returns nil if the session hasn't connected yet, matching Meta's own 0.7.0 sample); remap the renamed StreamState/StreamError/StreamConfiguration types - WearablesViewModel: request camera permission as soon as registration completes (the device does not appear in devicesStream until a permission is granted via Meta AI; the stock flow only requested it behind the Start-streaming button, which is disabled until a device appears -- a deadlock) - Info.plist: add the 0.7.0 discovery keys from Meta's sample -- bluetooth-central + processing background modes, NSBonjourServices (_bonjour._tcp), NSLocalNetworkUsageDescription Tested live: glasses camera POV streams end-to-end on a Ray-Ban Meta (V125-gen firmware, iOS 26.5).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On newer Ray-Ban Meta glasses (2026 frames running V125-generation firmware, DAT runtime
0.7.0.10.0), VisionClaw can pair and play audio, but the camera never streams: registration reaches.registered, yetdevicesStreamstays empty forever,AutoDeviceSelector.activeDeviceStreamnever emits, andrequestPermission(.camera)throws.noDevice. So "Start streaming" is permanently disabled.Root cause: the pinned
meta-wearables-dat-ios0.4.0 only supports Ray-Ban Meta firmware up to ~V20–V22 (per Meta's Version Dependencies matrix). V125-generation glasses need SDK 0.7.0. Reported widely upstream: facebook/meta-wearables-dat-ios#200, #207, #201.The fix
Migrates to DAT SDK 0.7.0 and its session-based device model (introduced in 0.6.0):
meta-wearables-dat-ios0.4.0 → 0.7.0.StreamSession→wearables.createSession(deviceSelector:)→DeviceSession; grabstateStream()beforestart(), wait until the session reaches.startedbeforesession.addStream(config:)→MWDATCamera.Stream(addStreamreturns nil if the session hasn't connected yet — matches Meta's own 0.7.0 sample); remap the renamedStreamState/StreamError/StreamConfigurationtypes.devicesStreamuntil a permission is granted via Meta AI, but the stock flow only requested it behind the Start-streaming button — which is disabled until a device appears. That's a deadlock on devices that don't auto-grant.bluetooth-central+processingbackground modes,NSBonjourServices(_bonjour._tcp), andNSLocalNetworkUsageDescription.Testing
Tested live on hardware: glasses camera POV streams end-to-end into the Gemini pipeline on a Ray-Ban Meta (V125-gen firmware, iOS 26.5). Scope is intentionally minimal — only the DAT migration; no behavior change to the Gemini/OpenClaw paths.
Older glasses on 0.4.x firmware: worth a maintainer check, but 0.7.0 is Meta's current SDK and the matrix lists it as the supported path going forward.