Summary
The AM-CF1 is an integrated audio collaboration system controllable over TCP/IP via a binary command protocol. Third-party controllers authenticate with a username/password combination before issuing commands to control speaker gain, mute, memory presets, standby mode, Bluetooth, and microphone beam steering. The device operates as a TCP server on a configurable port (default 3000) and maintains connection with keepalive messages.
Transport
protocols:
- tcp
addressing:
port: 3000 # default; configurable per source: "Set the port number according to the remote controller to be connected"
auth:
type: password
mechanism: binary challenge (username + 16-byte ASCII password, command 80H, 20H)
connection:
keepalive: send at least 1 byte every 10s (0xFF if no status data), or connection drops after 60s silence
Traits
- powerable # standby mode ON/OFF commands present (F3H)
- routable # memory preset recall commands present (F1H)
- queryable # status request commands for gain, mute, preset, standby, bluetooth, beam steering
- levelable # speaker output gain absolute and step commands present (91H)
Actions
- id: login
label: Log In
kind: action
params:
- name: username
type: string
description: 16-byte ASCII; pad with 0x00 if shorter
- name: password
type: string
description: 16-byte ASCII; pad with 0x00 if shorter
command: 80H, 20H, <username>, <password>
response: 80H, 01H, 01H (ACK) or 80H, 01H, 00H (NACK)
- id: logout
label: Log Out
kind: action
params: []
command: 81H, 00H
response: 81H, 00H
- id: set_speaker_gain_absolute
label: Set Speaker Output Gain (Absolute)
kind: action
params:
- name: channel_attribute
type: integer
description: "01H = Speaker Out (fixed)"
- name: channel_number
type: integer
description: "00H (fixed)"
- name: position
type: integer
description: 00H-3FH maps to -∞ to 0dB per gain table; default 3DH (0dB)
command: 91H, 03H, <channel_attribute>, <channel_number>, <position>
response: 91H, 03H, <channel_attribute>, <channel_number>, <position>
- id: set_speaker_gain_step
label: Set Speaker Output Gain (Step)
kind: action
params:
- name: channel_attribute
type: integer
description: "01H = Speaker Out; 00H = Mic In (also updates web gain)"
- name: channel_number
type: integer
description: "00H (fixed)"
- name: step
type: integer
description: "41H-5FH = 1-31 steps up; 61H-7FH = 1-31 steps down (min position 01H)"
command: 91H, 03H, <channel_attribute>, <channel_number>, <step>
response: 91H, 03H, <channel_attribute>, <channel_number>, <position>
- id: set_mute
label: Set Mute Mode
kind: action
params:
- name: channel_attribute
type: integer
description: "00H = Mic In; 01H = Speaker Out"
- name: channel_number
type: integer
description: "00H (fixed)"
- name: on_off
type: integer
description: "00H = unmute; 01H = mute"
command: 98H, 03H, <channel_attribute>, <channel_number>, <on_off>
response: 98H, 03H, <channel_attribute>, <channel_number>, <on_off>
- id: recall_preset
label: Recall Memory Preset
kind: action
params:
- name: preset_number
type: integer
description: "00H = Preset 1; 01H = Preset 2"
command: F1H, 02H, 00H, <preset_number>
response: F1H, 02H, 00H, <preset_number>
note: Requires processing time; adjust response wait time accordingly
- id: set_standby
label: Set Standby Mode
kind: action
params:
- name: standby_mode
type: integer
description: "00H = standby OFF; 01H = standby ON"
command: F3H, 02H, 00H, <standby_mode>
response: F3H, 02H, 00H, <standby_mode>
- id: set_bluetooth
label: Set Bluetooth Mode
kind: action
params:
- name: on_off
type: integer
description: "00H = OFF (disconnect/cancel); 01H = ON (start pairing)"
command: F5H, 02H, 00H, <on_off>
response: F5H, 02H, 00H, <bluetooth_mode>
notes:
- Bluetooth Mode response values: 00H = OFF, 01H = In pairing registration, 02H = In connection
- id: set_mic_beam_steering
label: Set Microphone Beam Steering
kind: action
params:
- name: auto_manual
type: integer
description: "00H = Auto; 01H = Manual"
- name: direction
type: integer
description: "Signed 1-byte; -90 to 90 deg (Manual); 0 (Auto)"
- name: distance
type: integer
description: "Big-endian unsigned 2-byte; Manual: 0-2400 (inch×10) or 0-6000 (cm×10)"
- name: unit
type: integer
description: "00H = inch; 01H = cm"
command: A0H, 05H, <auto_manual>, <direction>, <distance>, <unit>
response: A0H, 05H, <auto_manual>, <direction>, <distance>, <unit>
- id: set_status_notification
label: Set Status Notification
kind: action
params:
- name: on_off
type: integer
description: "00H = OFF; 01H = ON; default OFF"
command: F2H, 02H, 00H, <on_off>
response: F2H, 02H, 00H, <on_off>
note: Only active during logged-in session
- id: set_beam_steering_notification
label: Set Microphone Beam Steering Status Notification
kind: action
params:
- name: interval
type: integer
description: "00H = immediate; 01H-0AH = 100-1000msec in 100msec units"
- name: unit
type: integer
description: "00H = inch; 01H = cm"
- name: on_off
type: integer
description: "00H = OFF; 01H = ON; default OFF"
command: F2H, 04H, 01H, <interval>, <unit>, <on_off>
response: F2H, 04H, 01H, <interval>, <unit>, <on_off>
note: Notification sent at interval regardless of value change; only active during logged-in session
- id: get_speaker_gain
label: Get Speaker Output Gain Position
kind: query
params:
- name: channel_attribute
type: integer
description: "01H = Speaker Out (fixed)"
- name: channel_number
type: integer
description: "00H (fixed)"
command: "F0H, 03H, 11H, <channel_attribute>, <channel_number>"
response: "91H, 03H, <Channel Attribute>, <Channel Number>, <Position>"
- id: get_mute_mode
label: Get Mute Mode
kind: query
params:
- name: channel_attribute
type: integer
description: "00H = Mic In; 01H = Speaker Out"
- name: channel_number
type: integer
description: "00H (fixed)"
command: "F0H, 03H, 18H, <channel_attribute>, <channel_number>"
response: "98H, 03H, <Channel Attribute>, <Channel Number>, <ON/OFF>"
- id: get_preset_number
label: Get Memory Preset Number
kind: query
params: []
command: "F0H, 02H, 71H, 00H"
response: "F1H, 02H, 00H, <Preset Number>"
- id: get_standby_mode
label: Get Standby Mode
kind: query
params: []
command: "F0H, 02H, 72H, 00H"
response: "F3H, 02H, 00H, <Standby mode>"
- id: get_bluetooth_mode
label: Get Bluetooth Mode
kind: query
params: []
command: "F0H, 02H, 74H, 00H"
response: "F5H, 02H, 00H, <Bluetooth Mode>"
- id: get_beam_steering_setting
label: Get Microphone Beam Steering Setting
kind: query
params: []
command: "F0H, 05H, 20H, 00H, 00H, 00H, 00H"
response: "A0H, 05H, <Auto/Manual>, <Direction>, <Distance>, <inch/cm>"
- id: get_beam_steering_position
label: Get Microphone Beam Steering Position
kind: query
params:
- name: unit
type: integer
description: "00H = inch; 01H = cm"
command: "F0H, 06H, 50H, 00H, 00H, 00H, 00H, <unit>"
response: "D0H, 06H, A0H, <X coordinate>, <Y coordinate>, <inch/cm>"
Feedbacks
- id: login_result
type: enum
values:
- ack (80H, 01H, 01H - credentials matched)
- nack (80H, 01H, 00H - credentials did not match)
note: Returns NACK for any command issued before successful login (except login/logout)
- id: speaker_gain_position
type: integer
range: 00H-3FH
note: 00H = -∞dB, 3DH = 0dB, 3EH/3FH = 0dB; maps to Gain Table in source
- id: mute_state
type: enum
values:
- unmuted (00H)
- muted (01H)
- id: preset_number
type: enum
values:
- preset_1 (00H)
- preset_2 (01H)
- id: standby_mode
type: enum
values:
- off (00H)
- on (01H)
- id: bluetooth_mode
type: enum
values:
- off (00H)
- pairing_registration (01H)
- connected (02H)
- id: mic_beam_steering_setting
type: object
fields:
auto_manual: integer (00H=Auto, 01H=Manual)
direction: integer (-90 to 90 for Manual, 0 for Auto)
distance: integer (big-endian 2-byte, unit: inch×10 or cm×10)
unit: integer (00H=inch, 01H=cm)
- id: mic_beam_steering_position
type: object
fields:
x: integer (big-endian signed 2-byte; -600.0 to 600.0 cm/inch)
y: integer (big-endian unsigned 2-byte; 0.0 to 600.0 cm/inch)
unit: integer (00H=inch, 01H=cm)
note: Unsolicited notification via D0H, 06H, A0H command when beam steering notification is enabled
- id: status_notification
type: object
description: Unsolicited status push; format matches corresponding status request response; only sent when status notification is ON and session is logged in
note: Beam steering position pushed at configured interval when beam steering notification is ON
Variables
# All controllable settings are command-driven via Actions; no separate Variables section
# Gain table positions 00H-3FH map to dB values (-∞ to 0dB) per table in source
Events
- id: beam_steering_position_update
description: AM-CF1 pushes current microphone beam steering position at the configured interval when beam steering status notification is enabled
command: D0H, 06H, A0H, <X coordinate>, <Y coordinate>, <unit>
fields:
x: integer (big-endian signed 2-byte; -240.0 to 240.0 inch or -600.0 to 600.0 cm)
y: integer (big-endian unsigned 2-byte; 0.0 to 240.0 inch or 0.0 to 600.0 cm)
unit: integer (00H=inch, 01H=cm)
note: Only active when beam steering status notification is ON and session is logged in
Macros
# No explicit multi-step macros described in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures stated in source
Notes
- AM-CF1 acts as TCP server; must maintain connection with keepalive (1 byte every 10s or 60s timeout)
- Binary command format: command byte (80H–FFH), data length byte, data bytes; max message 1024 bytes
- All commands require successful login (80H, 20H) first; login/logout are the only commands accepted without authentication
- If communication drops, controller must re-login
- Speaker gain step down minimum position is 01H (not 00H which is -∞dB)
- Preset recall requires processing time — wait before polling status
- Bluetooth ON puts device in discoverable/pairing mode; OFF disconnects or cancels pairing
- Beam steering position: X is signed (-90 to +90 deg effectively via coordinate system), Y is unsigned (0 to max distance)
- Default speaker gain position is 3DH (0dB)
- Status notification is OFF by default; beam steering notification is OFF by default
- Connection dropped if no data received from controller for 60 seconds
Provenance
source_domains:
- toa.com.sg
- go2.toa-global.com
source_urls:
- "https://toa.com.sg/document/2496-am-cf1-integrated-audio-collaboration-system-(firmware-updating-procedure)-others.pdf"
- https://go2.toa-global.com/am-cf1
retrieved_at: 2026-04-29T19:25:10.564Z
last_checked_at: 2026-06-02T22:15:47.517Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:15:47.517Z
matched_actions: 18
action_count: 18
confidence: medium
summary: "All 18 spec actions traced to source (dip-safe re-verify). (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "physical form factor, audio channel counts, wattage, operating temperature range not stated in source"
- "no safety warnings or interlock procedures stated in source"
- "firmware version compatibility not stated in source"
- "physical dimensions, weight, power consumption not stated in source"
- "default username/password (admin/admin) noted in example but source does not state how to change credentials"
- "maximum concurrent TCP sessions not stated in source"
- "error code semantics beyond ACK/NACK not detailed in source"
- "factory reset procedure not documented in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0