Repository navigation
Releases
Releases · hellwand/obsbot4linux
v0.13.2
Fixed
- The daemon no longer broadcasts a state right after a change that still has the old zone, hand,
start pose, preset, image, zoom and audio values. It now sends one state after the full read
that follows the change, so a client's optimistic value is not pulled back for a second (#107).
v0.13.1
Fixed
wake modesets the tracking mode at power-on, not on waking from sleep;wake zoomhad no
observable effect on the Tiny 2 Lite, at power-on or on waking. README and help say so; command
names and JSON keys are unchanged (#102).
v0.13.0
Added
presets([{slot, name, pose}],nullwhen the camera did not answer) instatusand the
daemon's state events. It is read with the zone and hand data, so apreset save|rename|delete
through the daemon broadcasts the new list at once. Capabilitypreset_state(#103).
v0.12.0
Added
zone view list|save|rename|delete|gostores, lists and goes to named poses in the camera
(0x1344,0x1384,0x1544,0x13c4,0x1604);status.zone.viewslists them. They are not
exclusion areas, the camera does not track by them. Capabilityzone_views(#74).hand area --pan MIN MAX --tilt MIN MAXandhand area-resetset the hand tracking area
(0x2044..0x21c4) and put it back to the default (0x25c4..0x2684);hand gimbal on|off
lets the hand tracker move the gimbal or holds it (0x26c4). Capabilitieshand_area,
hand_gimbal(#75).hand pan on|off,hand tilt on|offandhand return-after <seconds>(0x2344,0x23c4,
0x2444);status.handhaspan_enabled,tilt_enabledandreturn_after. Capabilities
hand_axes,hand_return_after(#85).
Fixed
zone on|offsends0x08c4only.0x5084has no handler in the firmware and the 100 ms pause
was not needed: the camera followed0x08c4alone both ways (#81).- A reply without a data section (type
0x09, what the camera answers to the view list while it
has none) counted as "no answer" and ran into the poll timeout; it now reads as empty.
Changed
zone.returnstays a pose: the leading word of0x4ec4is the preset id, always 0, so the
camera has no "not set" for it (#57).
v0.11.1
Added
startup set --ai static|normal|upper-body|headless|group|nonesets the AI mode of the initial
state, alone (the pose stays) or with a pose.startup showandstatus.state.startupshow it
asai_mode(nullwhen not set). Capabilitystartup_ai(#79).
Fixed
startup goleft tracking suspended when the initial state had no AI mode, which is what
startup setalways wrote.startup setnow keeps the mode of the initial state unless
--aiis given, and the README says thatstartup goneeds a mode there (#79).
v0.11.0
Added
speed-mode lazy|slow|normal|fast|very-fast|autosets the finer tracking speed (0x0944) and
speed headroomthe third vertical tracking type (0x0cc4= 1).status.framingreads the
speed mode and the options below back. Capabilitiesspeed_mode,speed_headroom(#64).framing auto-zoom|size|zoom-speed|offset|partsets the options the AI modes are made of
(0x0a44,0x0ac4,0x0b44,0x0bc4/0x0c44,0x1584);status.framingreads them back.
Capabilityframing(#84).gimbal rate --pan R --tilt Rturns the gimbal at a speed untilgimbal stop(0x6484, the
joystick of OBSBOT Center; it does not limit absolute moves). The camera reverses its yaw when
mirror xor invert is on, which obsbot4linux undoes. No capabilitygimbal_rate: the camera
has no timeout, so a client that dies leaves it turning. Capabilitygimbal_stop(#78, #80).gimbal --pan P --tilt T --speed Smoves at S degrees per second (0x6544),zoom F --speed S
zooms smoothly (0x6884) andzoom stop/gimbal stopstop (0x68c4,0x6704). Capabilities
gimbal_speed,zoom_speed(#80).gimbal center X Y(0x0544), which moved the gimbal only toward the left and downwards in
tests, see the README. Hidden from--help, no capability (#83).
Changed
status.tracking_speedcan now beheadroom: the camera value 1 of0x0cc4used to show as
standard.
v0.10.0
Added
led blink on|offmakes the status LED blink or burn steadily (short command18). The status
block does not carry it, sostatuscannot show it.led 0-3is unchanged (#76).exposure manual --time <1-2500> --gain <1-64>sets the shutter time and gain together with
the switch to manual exposure, both range-checked first. The camera uses the shutter step at or
below the time given. Capabilityexposure_values(#77).audio volume <0-100>sets the microphone volume (0x8102);statushasaudio_volume
(query0x80c2). Capabilityaudio_volume(#86).wake zoom <1.0-4.0>sets the zoom after waking up andwake mode <mode>the tracking mode the
camera starts in; both read back instatus(wake_up_zoom_percent,default_work_mode).
wakealone still wakes the camera. Capabilitieswake_zoom,wake_mode(#87).focus af continuous|single|manualsets the camera's own autofocus mode (0x3442) and
focus point <x> <y>focuses once on a point (0x3582);statushasfocuswith the mode,
the manual position and the focus window (query0x3642). Capabilitiesfocus_af_mode,
focus_point(#88).
Changed
image exposure_timeis refused unless the exposure is manual, since a shutter time sent in
automatic exposure freezes it; the error points toexposure manual --time.
v0.9.0
Added
firmware(e.g.6.2.8.1, query0x0408) andmodel_info(product,platform, query
0x1948) instatusand the state events, read once per connect;obsbot4linux status
prints the firmware (through the daemon, from what it already read). The serial number and
UUID are not read (#63).startup showprints the start pose (0x3884) and the picture settings of the initial state
(0x3e84) (#89). A set group shows the byte as read, a group that is not set isnull.statusshowswake_up_zoom_percent,sleep_imagesanddefault_work_mode(#82).
Changed
status.anti_flickeris a name now (off,50hz,60hz,auto) instead of the V4L2
number; the camera can report automatic detection, which was passed on as a bare 3 (#82).
Fixed
startup gono longer turns the next zone tracking return into Static. It sends the short
command00instead of the framed0x3904, which arms that flag in the camera (#79). The
camera ignores the short command while asleep or with the gimbal locked. Found by static
analysis of the firmware; the zone return itself is not yet checked on the camera.- The error code of a rejected query ("camera rejected query ...") was read from the wrong place.
Those answers have a 16-byte header with the code (a signed 16-bit number, e.g. -3) in an
extension; it is now read from there and shown in decimal (#62).
v0.8.0
Changed
- The daemon reads the live gimbal pose (
0x0043) every second only while a client wants it.
Awatchconnection asks with the request["live-pose", "on"](and"off"); the poll runs
while at least one connection has it on, a closed connection counts as off, and a new one
starts off. Without a subscriberposein the state events changes only with the full read
every 5 s, so fewer queries hold the camera lock. New capabilitylive_pose_on_demand; clients
that never ask no longer get a pose every second (#68).
v0.7.3
Fixed
- With zone tracking and "follow new targets" on, the camera switched to Static each time the
target left the area and the gimbal returned, instead of taking the next person. obsbot4linux
caused it: the live pose came from the AI query0x6604, polled every second, and every
0x6604arms a flag in the camera that turns the next return into Static. The pose now comes
from the gimbal controller (0x0043), which does not set the flag and follows AI tracking just
the same (#67).