benikigai/plus-onePublic
Plus One
SHA-256 f3424f3e28fde7a6d912a63b5e4ab7faa5778b8d61e21102826b3d918ec8f238
# Draft device-model layer (proposal 0001). Not part of schema 0.4.0 yet.
status: draft layer from proposal 0001 (openproduct-co/opd-spec#3); not in schema 0.4.0 yet
id: dev:plus-one-core
access: device-model
eligibility: our own product (proposal 0001 rule 5)
simulator:
name: to be confirmed
note: the firmware research covered Renode on nRF52, not the ESP32-S3; Espressif's QEMU fork has an esp32s3 machine whose
coverage of I2S, touch and the radio must be checked before choosing
mcu:
part: part:esp32-s3-module
core: Xtensa LX7, dual core, 240 MHz
flash_mb: 16
psram_mb: 8
pins:
- id: pin:plus
function: gpio_in
to: part:tact-switch
pull: up
wake: true
- id: pin:boot
function: strap
to: part:boot-button
- id: pin:ring-data
function: rmt_out
to: part:ring-led
- id: pin:touch
function: touch
to: touch ring electrode on the PCB
- id: pin:mic-clk
function: i2s_pdm_clk
to: part:mems-mic
- id: pin:mic-data
function: i2s_pdm_data
to: part:mems-mic
- id: pin:amp
function: i2s_out
to: part:audio-amp
- id: pin:mic-power
function: gpio_out
note: tied to the ring state in hardware
buses:
- id: bus:i2c0
kind: i2c
devices:
- part:imu
- part:fuel-gauge
- part:haptic-driver
- qwiic port
- pogo pads (module ID)
- part:wireless-receiver
radio:
stack: ESP-IDF Wi-Fi and BLE
module_certified: the module carries its own modular approvals; confirm before relying on them
envelope:
bands:
- 2400-2483.5 MHz
max_tx_dbm: per the module's approval
regions:
- US
- EU
note: the Wi-Fi and BLE libraries are Espressif binaries; firmware links them, the OPD never holds them (rule 1)
charging:
paths:
- USB-C
- dock on the pogo pads
- magnetic wireless charger
receiver: part:wireless-receiver
note: receive only; a phone can't charge it
power:
battery: part:battery
states:
- off (hardware switch)
- deep sleep, plus as wake
- listening, mics on, ring lit
- talking, amp on
note: battery life is not modelled; figures stay estimates until a bench rig measures them (rule 8)
firmware:
load_path: USB-C; hold BOOT while plugging in to reach the ROM bootloader; nothing is locked
recovery: the ROM bootloader can't be overwritten, so any unit can be reflashed
notice: Whoever flashes a Plus One with their own firmware is responsible for its radio compliance (47 CFR 2.909).
reference: N+1 Labs reference firmware, open licence, linked here once published
scenarios:
- 'press and hold the plus, speak, release: the ring shows listening then thinking'
- 'an agent needs you: the ring pulses and the haptic taps once'
- 'a module is attached (battery, screen, Thread, IR): the ID line reads it and firmware loads its driver'
- 'dropped onto a magnetic charger: the wireless receiver starts charging and the ring shows it'
test_stations:
- sta:s7
- sta:s8