Summary
Arylic A31-based streaming amplifier and DIY board platform controllable via UART (RS-232C) serial interface. Covers device status, playback control, audio DSP, multi-zone management (MA400/HA400), and default configuration APIs. TCP transport also supported on BP10XX-based hardware by wrapping UART commands.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
# TCP wrapping: MCU+PAS+RAKOIT:{uart_message}& - available on BP10XX-based models
# UNRESOLVED: TCP port number not stated in source
Traits
traits:
- powerable # SYS:STANDBY command present
- queryable # numerous query commands returning state (VOL, MUT, SRC, etc.)
- routable # SRC: command selects input source
- levelable # VOL, BAS, TRE, MID, BAL - continuous range parameters
Actions
actions:
- id: factory_reset
label: Factory Reset
kind: action
command: SYS:RESET
params: []
- id: reboot
label: Reboot Device
kind: action
command: SYS:REBOOT
params: []
- id: standby
label: Enter Standby
kind: action
command: SYS:STANDBY
params: []
notes: Cannot wake via UART on some models
- id: set_device_name
label: Set Device Name
kind: action
command: "NAM:{hextext}"
params:
- name: hextext
type: string
description: "UTF-8 device name encoded as hex (e.g. 4261636B79617264 = Backyard)"
- id: trigger_wifi_setup
label: Trigger WiFi Setup
kind: action
command: WRS
params: []
- id: set_pin_code_enabled
label: Set Bluetooth Pin Code Enabled
kind: action
command: "COE:{onoff}"
params:
- name: onoff
type: integer
description: "1=on, 0=off. Device reboots on change."
- id: set_bluetooth_pin
label: Set Bluetooth Pin Code
kind: action
command: "COD:{pin}"
params:
- name: pin
type: string
description: "4-digit pin, default 0000"
- id: select_source
label: Select Input Source
kind: action
command: "SRC:{source}"
params:
- name: source
type: enum
values: [NET, BT, USBDAC, LINE-IN, OPT, COAX, LINE-IN2, OPT2, COAX2, HDMI]
description: "Input source identifier"
- id: play_pause
label: Play / Pause
kind: action
command: POP
params: []
notes: Available in network and bluetooth playback
- id: stop
label: Stop Playback
kind: action
command: STP
params: []
notes: Network playback only
- id: next_track
label: Next Track
kind: action
command: NXT
params: []
- id: previous_track
label: Previous Track
kind: action
command: PRE
params: []
- id: play_preset
label: Play Preset
kind: action
command: "PST:{preset}"
params:
- name: preset
type: integer
description: Preset playlist number
- id: set_loop_mode
label: Set Loop / Shuffle Mode
kind: action
command: "LPM:{loopmode}"
params:
- name: loopmode
type: enum
values: [REPEATALL, REPEATONE, REPEATSHUFFLE, SHUFFLE, SEQUENCE]
description: Playback loop/shuffle mode
- id: bluetooth_disconnect
label: Bluetooth Disconnect / Reconnect
kind: action
command: "BTC:{onoff}"
params:
- name: onoff
type: integer
description: "0=disconnect, 1=reconnect"
- id: set_autoplay
label: Set Autoplay
kind: action
command: "APL:{onoff}"
params:
- name: onoff
type: integer
description: "1=enable (play last playlist on boot), 0=disable"
- id: set_audio_output
label: Set Audio Output
kind: action
command: "AUD:{onoff}"
params:
- name: onoff
type: integer
description: "1=on, 0=off"
- id: set_volume
label: Set Volume
kind: action
command: "VOL:{volume}"
params:
- name: volume
type: integer
description: "Volume level [0,100]"
- id: set_mute
label: Set Mute
kind: action
command: "MUT:{onoff}"
params:
- name: onoff
type: integer
description: "1=mute, 0=unmute"
- id: set_bass
label: Set Bass Tone
kind: action
command: "BAS:{tone}"
params:
- name: tone
type: integer
description: "Bass level [-10,10] dB"
- id: set_treble
label: Set Treble Tone
kind: action
command: "TRE:{tone}"
params:
- name: tone
type: integer
description: "Treble level [-10,10] dB (range inferred from BAS)"
- id: set_mid
label: Set Mid Tone
kind: action
command: "MID:{tone}"
params:
- name: tone
type: integer
description: "Mid level (range not explicitly stated, likely [-10,10] dB)"
- id: set_virtual_bass
label: Set Virtual Bass
kind: action
command: "VBS:{onoff}"
params:
- name: onoff
type: integer
description: "1=enable, 0=disable"
- id: set_balance
label: Set Audio Balance
kind: action
command: "BAL:{balance}"
params:
- name: balance
type: integer
description: "Balance [-100,100]. Positive attenuates left, negative attenuates right."
- id: set_fixed_volume
label: Set Fixed Volume Output
kind: action
command: "VOF:{volume}"
params:
- name: volume
type: integer
description: "Fixed output [0,100]. 0 disables fixed volume."
- id: set_group_volume
label: Set Multiroom Group Volume
kind: action
command: "VOG:{volume}"
params:
- name: volume
type: integer
description: "Volume for grouped playback"
- id: set_eq_group
label: Set EQ Group
kind: action
command: "EQS:{eqidx}"
params:
- name: eqidx
type: integer
description: "EQ group index (0=Flat, 1=Classical, 2=Pop, 3=Jazz, 4=Rock, 5=Vocal per example)"
- id: set_volume_step
label: Set Volume Step
kind: action
command: "VST:{step}"
params:
- name: step
type: integer
description: "Volume increment per button press [0,10]"
- id: set_eq_enabled
label: Set EQ Enabled
kind: action
command: "EQE:{onoff}"
params:
- name: onoff
type: integer
- id: set_crossfilter_enabled
label: Set Crossfilter Enabled
kind: action
command: "CFE:{onoff}"
params:
- name: onoff
type: integer
description: "Enables high-pass on stereo out, low-pass on DAC-X out"
- id: set_crossfilter_freq
label: Set Crossfilter Frequency
kind: action
command: "CFF:{cffreq}"
params:
- name: cffreq
type: integer
description: "Crossover frequency [50,300]"
- id: set_led
label: Set LED / Display
kind: action
command: "LED:{onoff}"
params:
- name: onoff
type: integer
- id: set_beep
label: Set Beep Sound
kind: action
command: "BEP:{onoff}"
params:
- name: onoff
type: integer
description: "Beep on key press"
- id: set_prompt_voice
label: Set Prompt Voice
kind: action
command: "PMT:{onoff}"
params:
- name: onoff
type: integer
description: "Device reboots on change"
- id: set_auto_switch
label: Set Auto Switch Mode
kind: action
command: "ASW:{onoff}"
params:
- name: onoff
type: integer
description: "Auto-return to previous source on disconnect"
- id: set_volume_sync
label: Set Volume Sync
kind: action
command: "VOS:{onoff}"
params:
- name: onoff
type: integer
description: "Sync master volume changes to multiroom slaves"
- id: set_standby_on_power
label: Set Standby on Power
kind: action
command: "SOP:{onoff}"
params:
- name: onoff
type: integer
description: "Enter standby when power supplied"
- id: set_max_volume
label: Set Max Volume
kind: action
command: "MXV:{volume}"
params:
- name: volume
type: integer
description: "Maximum volume [30,100]"
- id: set_mute_delay
label: Set Auto-Mute Delay
kind: action
command: "DLY:{mute_delay}"
params:
- name: mute_delay
type: integer
description: "No-audio timeout before auto mute [0,32767]"
- id: set_power_on_mode
label: Set Power-On Input Source
kind: action
command: "POM:{source}"
params:
- name: source
type: enum
values: [NET, BT, USBDAC, LINE-IN, OPT, COAX, LINE-IN2, OPT2, COAX2, HDMI]
description: "Source to auto-select at power on"
- id: zone_command
label: Send Command to Zone
kind: action
command: "ZON:{logiczoneid}:{msg}"
params:
- name: logiczoneid
type: integer
description: "Logical zone ID [1,127]"
- name: msg
type: string
description: "Any UART command to redirect to the zone"
notes: MA400/HA400/M400/H400 4-zone models only
- id: set_zone_logic_id
label: Set Zone Logic ID
kind: action
command: "IDS:{zoneid}:{logiczoneid}"
params:
- name: zoneid
type: integer
description: Physical zone ID
- name: logiczoneid
type: integer
description: "Logical zone ID [1,127]"
notes: For cascading multiple MA400 units
- id: set_default_config
label: Set Default Configuration
kind: action
command: "DEF:{subcmd}:{param}"
params:
- name: subcmd
type: string
description: "Sub-API command (LTP, NAM, FXN, VOL, VBS, PMT, VOS, BEP, MDL, VST, SAV, SEN, POM, MXV, COE, COD, LAP)"
- name: param
type: string
description: "Value for the sub-API command"
notes: Must send DEF:SAV last and factory reset to apply
- id: save_defaults
label: Save Default Configuration
kind: action
command: DEF:SAV
params: []
notes: Must be sent last in default config sequence; factory reset required after
Feedbacks
feedbacks:
- id: device_status
type: string
command: STA
response: "STA:{states}"
description: "CSV: source,mute,volume,treble,bass,net,internet,playing,led,upgrading"
- id: internet_status
type: enum
values: ["0", "1"]
command: WWW
response: "WWW:{onoff}"
description: Unsolicited on state change
- id: device_name
type: string
command: NAM
response: "NAM:{hextext}"
description: "UTF-8 name as hex-encoded string"
- id: ethernet_status
type: enum
values: ["0", "1"]
command: ETH
response: "ETH:{onoff}"
description: Unsolicited on state change
- id: wifi_status
type: enum
values: ["0", "1"]
command: WIF
response: "WIF:{onoff}"
description: Unsolicited on state change
- id: wifi_signal
type: integer
command: WSS
response: "WSS:{rssi}"
description: WiFi RSSI, host must query proactively
- id: bluetooth_signal
type: integer
command: BSS
response: "BSS:{rssi}"
description: Bluetooth RSSI, not all models
- id: ip_address
type: string
command: IPA
response: "IPA:{ip}"
description: Device IP address, unsolicited on change
- id: local_time
type: string
command: TME
response: "TME:{time}"
description: 'Format: YYYY-MM-DD HH:MM:SS (+offset)'
- id: firmware_version
type: string
command: VER
response: "VER:{version}"
description: "version-gitcommit-apilevel joined by -"
- id: current_source
type: enum
values: [NET, BT, USBDAC, LINE-IN, OPT, COAX, LINE-IN2, OPT2, COAX2, HDMI]
command: SRC
response: "SRC:{source}"
- id: playing_state
type: enum
values: ["0", "1"]
command: PLA
response: "PLA:{onoff}"
- id: multiroom_channel
type: enum
values: [S, L, R]
command: CHN
response: "CHN:{channel}"
description: "Stereo / Left / Right - read only"
- id: multiroom_mode
type: enum
values: [S, M, N]
command: MRM
response: "MRM:{mrmmode}"
description: "Slave / Master / Normal - read only"
- id: track_title
type: string
command: TIT
response: "TIT:{hextext}"
description: "Hex-encoded title. Not available over TCP."
- id: track_artist
type: string
command: ART
response: "ART:{hextext}"
description: "Hex-encoded artist. Not available over TCP."
- id: track_album
type: string
command: ALB
response: "ALB:{hextext}"
description: "Hex-encoded album. Not available over TCP."
- id: track_vendor
type: enum
values: [spotify, qplay, dlna, airplay, upnp, phone, usb, tidal, napster, qobuz, amazon, tunein, iheart, vtuner, http, other]
command: VND
response: "VND:{vendor}"
description: Not available over TCP
- id: track_elapsed
type: string
command: ELP
response: "ELP:{elapsed}"
description: "Format: elapsed_ms/total_ms. Not available over TCP."
- id: playlist_info
type: string
command: PLI
response: "PLI:{playlist_info}"
description: "Format: index/count (1-based)"
- id: current_volume
type: integer
command: VOL
response: "VOL:{volume}"
- id: mute_state
type: enum
values: ["0", "1"]
command: MUT
response: "MUT:{onoff}"
- id: bass_tone
type: integer
command: BAS
response: "BAS:{tone}"
- id: treble_tone
type: integer
command: TRE
response: "TRE:{tone}"
- id: mid_tone
type: integer
command: MID
response: "MID:{tone}"
- id: virtual_bass
type: enum
values: ["0", "1"]
command: VBS
response: "VBS:{onoff}"
- id: balance
type: integer
command: BAL
response: "BAL:{balance}"
- id: fixed_volume
type: integer
command: VOF
response: "VOF:{volume}"
- id: eq_list
type: string
command: PEQ
response: "PEQ:{eqlist}"
description: "Format: idx@name separated by commas"
- id: eq_group
type: integer
command: EQS
response: "EQS:{eqidx}"
- id: eq_enabled
type: enum
values: ["0", "1"]
command: EQE
response: "EQE:{onoff}"
- id: crossfilter_enabled
type: enum
values: ["0", "1"]
command: CFE
response: "CFE:{onoff}"
- id: crossfilter_freq
type: integer
command: CFF
response: "CFF:{cffreq}"
- id: available_sources
type: string
command: LST
response: "LST:{sources}"
description: "Comma-separated source identifiers"
- id: zone_logic_ids
type: string
command: IDS
response: "IDS:{ids}"
description: "Comma-separated logic IDs for all zones"
- id: autoplay_state
type: enum
values: ["0", "1"]
command: APL
response: "APL:{onoff}"
- id: loop_mode
type: enum
values: [REPEATALL, REPEATONE, REPEATSHUFFLE, SHUFFLE, SEQUENCE]
command: LPM
response: "LPM:{loopmode}"
- id: pin_code_enabled
type: enum
values: ["0", "1"]
command: COE
response: "COE:{onoff}"
- id: led_state
type: enum
values: ["0", "1"]
command: LED
response: "LED:{onoff}"
- id: beep_state
type: enum
values: ["0", "1"]
command: BEP
response: "BEP:{onoff}"
- id: prompt_voice_state
type: enum
values: ["0", "1"]
command: PMT
response: "PMT:{onoff}"
- id: auto_switch_state
type: enum
values: ["0", "1"]
command: ASW
response: "ASW:{onoff}"
- id: volume_sync_state
type: enum
values: ["0", "1"]
command: VOS
response: "VOS:{onoff}"
- id: standby_on_power_state
type: enum
values: ["0", "1"]
command: SOP
response: "SOP:{onoff}"
- id: max_volume
type: integer
command: MXV
response: "MXV:{volume}"
- id: mute_delay
type: integer
command: DLY
response: "DLY:{mute_delay}"
- id: audio_output_state
type: enum
values: ["0", "1"]
command: AUD
response: "AUD:{onoff}"
Variables
variables: []
# UNRESOLVED: all settable parameters are modeled as action params with feedback counterparts above
Events
events:
- id: internet_status_changed
command: WWW
response: "WWW:{onoff}"
description: Unsolicited when internet connectivity changes
- id: ethernet_status_changed
command: ETH
response: "ETH:{onoff}"
description: Unsolicited when ethernet connectivity changes
- id: wifi_status_changed
command: WIF
response: "WIF:{onoff}"
description: Unsolicited when WiFi connectivity changes
- id: ip_address_changed
command: IPA
response: "IPA:{ip}"
description: Unsolicited when IP address changes
- id: track_metadata_changed
command: TIT / ART / ALB
description: "Unsolicited track title/artist/album notifications (UART only, not TCP)"
- id: state_changed
description: "Source states messages may be received without query when device state changes"
Macros
macros: []
# No multi-step sequences explicitly described in source beyond DEF:SAV workflow
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no explicit safety warnings or interlock procedures in source
# Note: SYS:RESET performs factory reset - irreversible action
# Note: COE, PMT commands cause device reboot
# Note: SYS:STANDBY cannot be woken via UART on some models
Notes
- All commands are 3-character mnemonics separated by
:and terminated with;over UART. - Sending a command without a parameter queries current state; sending with a parameter sets state.
- TCP transport wraps UART commands as
MCU+PAS+RAKOIT:{uart_message}&— available only on BP10XX-based hardware (MCU silkprint reads BP1048 or BP1064). - TIT, ART, ALB, VND, ELP metadata commands do not work over TCP.
- 4-zone models (MA400/HA400/M400/H400) use
ZON:{zoneid}:{cmd}prefix to address individual zones. - Multiple MA400 units can be cascaded via RS-232 after assigning unique logical zone IDs with
IDS. - Default configuration API (
DEF:prefix) requiresDEF:SAVas the final command, followed by factory reset.
Provenance
source_domains:
- developer.arylic.com
source_urls:
- https://developer.arylic.com/uartapi/
retrieved_at: 2026-05-15T00:36:07.249Z
last_checked_at: 2026-06-02T21:39:54.007Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:39:54.007Z
matched_actions: 44
action_count: 44
confidence: medium
summary: "Complete UART API with device control, playback, DSP, and multi-zone support (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact product model mapping to A31 platform not fully specified — source lists Up2Stream PRO, MA400/HA400, M400/H400"
- "TCP port number not stated in source"
- "all settable parameters are modeled as action params with feedback counterparts above"
- "no explicit safety warnings or interlock procedures in source"
- "TRE/MID tone ranges not explicitly stated (assumed [-10,10] by analogy with BAS)"
- "volume range stated as example values only; exact range likely [0,100] but upper bound not confirmed"
- "PST preset number range not stated"
- "response timing / latency characteristics not stated"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0