Skip to content

Firmware

Marco Ceccon edited this page Oct 12, 2026 · 2 revisions

This page covers the glasses' firmware as the protocol shows it: the build string, the Android base, the firmware versions seen and the update query. Installing firmware is not covered.

Build fingerprint

The glasses report their build as one string on svc100 field 1. The string follows Android's fingerprint format.

Meta/hammerhead/greathammerhead:14/UKQ1.250303.001/70523680060800100:user/release-keys
Part Value Meaning
1, brand Meta The maker of the build
2, product hammerhead The product codename. On Ray-Ban Meta Gen 2 it differs from the device codename
3, device and release greathammerhead and 14, split by a colon greathammerhead is the device codename. It selects the product id. 14 is the Android release
4, build id UKQ1.250303.001 An Android-style build identifier. Its meaning is unknown
5, incremental and type 70523680060800100 and user The firmware version, then the build type
6, tags release-keys The build is signed with release keys

The device codename is the one the product table in Glasses-hardware maps to a product id.

Android base

Part 3 ends in 14. In Android's fingerprint format this is the Android release, so the firmware is built on Android 14. Unconfirmed: nothing asks the glasses for their Android version directly.

Firmware versions

Version Where it appears What is known
70523680060800100 The build string on svc100 on Ray-Ban Meta Gen 2 An earlier build. The update query still offers it as a full image
72387580077200100 The build string on Ray-Ban Meta Gen 2 after an update Installed by an automatic update that started from 70523680060800100.
12.14.7 The case state on svc28 field 2 The case's firmware, not the glasses'
128.0.0.0.0 svc100 field 9 Unknown

Ray-Ban Meta Gen 2 reported 70523680060800100 before it updated to 72387580077200100. The newer build is the one it now runs.

How an update offer is queried

The phone can ask Meta whether a newer image exists for a pair. This is the protocol level only.

  1. The phone sends a form-encoded GraphQL request to Meta's AR endpoint, ar-genai.graph.meta.com. The request carries the AR token from the Meta login in an OAuth authorization header. See Meta-login-and-ownership.
  2. The operation is FetchConstellationUpdates. Its variables hold one request per device.
  3. Each device request carries the glasses' serial, a device type, a firmware version and a flag that asks for the full image only. The device type has the form ota.<codename>.user. For Ray-Ban Meta Gen 2 it is ota.greathammerhead.user.
  4. A firmware version of 0 asks for the full image. The reply then carries a signed download URL and a checksum for the image.
  5. When the glasses already run the newest image, the reply holds firmware_update_info as null.

On Ray-Ban Meta Gen 2, the query offered only 70523680060800100, as a full image. It offered nothing for 72387580077200100, in full or as a delta, for either device type. The newer build is not reachable by this query.

The language packs use a sibling query, FetchConstellationFeatureUpdates, from the same endpoint. See Assistant-voice-and-languages.

Service 29 is the firmware update service. Its messages are not described on this page.

Feature flags that the firmware holds are covered in MobileConfig. The svc100 fields that carry the build string and the serial are in Device-state-and-build-info.

Reference code

Reference code: Constants.kt, SettingSpec.kt

Open questions

  • Whether a build newer than 72387580077200100 exists, and how to reach it. The update query does not show it.
  • Whether the glasses take delta updates at all. The query showed none for Ray-Ban Meta Gen 2.
  • What the build id UKQ1.250303.001 means.
  • Whether the release field 14 is the real Android version.
  • What 128.0.0.0.0 in svc100 field 9 means.
  • What the messages on service 29 do.

Clone this wiki locally