Hello OpenIPC/Majestic team,
I’m using an OpenIPC camera with the following hardware/firmware:
SoC: ssc30kq / SigmaStar Infinity6E family
Sensor: IMX335
Flash: 16 MB NOR
Firmware: 2.6.05.21-ultimate
Build: openipc-ssc30kq
Audio input works correctly over RTSP/WebRTC. I can receive camera microphone audio together with video.
Audio output also works electrically and through Majestic when using /play_audio with a pre-recorded PCM file. The camera has AUDIO_OUT, connected to a PAM8403 amplifier and speaker.
Example working command:
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -filter:a "volume=0.95" -ac 1 -ar 8000 -f s16le test.pcm
curl -u root:PASSWORD
-H "Content-Type: application/octet-stream"
--data-binary "@test.pcm"
http://CAMERA_IP/play_audio
Majestic logs show that playback is accepted and sent to SigmaStar AO:
Audio playback: 78KB
[MI_AO_IMPL_SendFrame:2716] Strat pcm out success!!!
AO is initialized at boot:
client [PID] connected, module:ao
[_MI_AO_Init:1248] Init Ao Gain.
Output: 8kHz, 8dB
So the basic output path works:
/play_audio → Majestic → SigmaStar MI_AO → AUDIO_OUT → amplifier → speaker
The problem is that /play_audio appears to behave as a file/clip upload endpoint. It works when the full PCM file is uploaded, but it does not work as a live streaming endpoint for microphone talkback.
Tests attempted:
curl --data-binary @test.pcm http://CAMERA_IP/play_audio
Works.
Python requests.post(..., data=generator) streaming 8 kHz mono s16le PCM from laptop microphone
Does not play during streaming.
Stopping the Python streaming request with Ctrl+C
Still does not play anything afterward.
go2rtc WebRTC two-way audio
Browser microphone reaches go2rtc, but the OpenIPC RTSP probe only shows camera-side receive media:
video, recvonly, H265
audio, recvonly, OPUS/48000/2
There is no RTSP/ONVIF audio backchannel advertised, so go2rtc has no native return audio path to the camera speaker.
I also checked the camera filesystem. The MI_AO kernel/device side exists:
/dev/mi_ao
/proc/mi_modules/mi_ao/mi_ao0
/lib/modules/4.9.84/sigmastar/mi_ao.ko
But there is no separate user-space libmi_ao.so or CLI AO player available. Majestic appears to have the MI_AO userspace functions linked internally. strings /usr/bin/majestic shows symbols like:
/play_audio
MI_AO_SetPubAttr
MI_AO_Enable
MI_AO_EnableChn
MI_AO_SendFrame
MI_AO_SetVolume
MI_AO_SetMute
Request
Could Majestic support low-latency streaming talkback on SigmaStar SSC30KQ / Infinity6E?
Possible implementation ideas:
Make /play_audio support streaming/chunked HTTP POST, where incoming PCM frames are sent immediately to MI_AO_SendFrame instead of waiting for a complete uploaded body.
Add a separate endpoint, for example:
/play_audio_stream
that accepts continuous raw PCM:
8000 Hz
mono
signed 16-bit little-endian PCM
and feeds frames directly into MI_AO.
Optionally support WebSocket or UDP PCM input for lower latency:
/ws_audio_out
udp://camera:PORT
Expected use case:
Browser/laptop microphone
→ 8 kHz mono s16le PCM
→ Majestic streaming audio input endpoint
→ SigmaStar MI_AO
→ camera AUDIO_OUT
→ external amplifier/speaker
This would allow true two-way audio/talkback on SigmaStar OpenIPC cameras that already have working AUDIO_OUT hardware but do not expose an RTSP/ONVIF audio backchannel.
Thanks!
Hello OpenIPC/Majestic team,
I’m using an OpenIPC camera with the following hardware/firmware:
SoC: ssc30kq / SigmaStar Infinity6E family
Sensor: IMX335
Flash: 16 MB NOR
Firmware: 2.6.05.21-ultimate
Build: openipc-ssc30kq
Audio input works correctly over RTSP/WebRTC. I can receive camera microphone audio together with video.
Audio output also works electrically and through Majestic when using /play_audio with a pre-recorded PCM file. The camera has AUDIO_OUT, connected to a PAM8403 amplifier and speaker.
Example working command:
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -filter:a "volume=0.95" -ac 1 -ar 8000 -f s16le test.pcm
curl -u root:PASSWORD
-H "Content-Type: application/octet-stream"
--data-binary "@test.pcm"
http://CAMERA_IP/play_audio
Majestic logs show that playback is accepted and sent to SigmaStar AO:
Audio playback: 78KB
[MI_AO_IMPL_SendFrame:2716] Strat pcm out success!!!
AO is initialized at boot:
client [PID] connected, module:ao
[_MI_AO_Init:1248] Init Ao Gain.
Output: 8kHz, 8dB
So the basic output path works:
/play_audio → Majestic → SigmaStar MI_AO → AUDIO_OUT → amplifier → speaker
The problem is that /play_audio appears to behave as a file/clip upload endpoint. It works when the full PCM file is uploaded, but it does not work as a live streaming endpoint for microphone talkback.
Tests attempted:
curl --data-binary @test.pcm http://CAMERA_IP/play_audio
Works.
Python requests.post(..., data=generator) streaming 8 kHz mono s16le PCM from laptop microphone
Does not play during streaming.
Stopping the Python streaming request with Ctrl+C
Still does not play anything afterward.
go2rtc WebRTC two-way audio
Browser microphone reaches go2rtc, but the OpenIPC RTSP probe only shows camera-side receive media:
video, recvonly, H265
audio, recvonly, OPUS/48000/2
There is no RTSP/ONVIF audio backchannel advertised, so go2rtc has no native return audio path to the camera speaker.
I also checked the camera filesystem. The MI_AO kernel/device side exists:
/dev/mi_ao
/proc/mi_modules/mi_ao/mi_ao0
/lib/modules/4.9.84/sigmastar/mi_ao.ko
But there is no separate user-space libmi_ao.so or CLI AO player available. Majestic appears to have the MI_AO userspace functions linked internally. strings /usr/bin/majestic shows symbols like:
/play_audio
MI_AO_SetPubAttr
MI_AO_Enable
MI_AO_EnableChn
MI_AO_SendFrame
MI_AO_SetVolume
MI_AO_SetMute
Request
Could Majestic support low-latency streaming talkback on SigmaStar SSC30KQ / Infinity6E?
Possible implementation ideas:
Make /play_audio support streaming/chunked HTTP POST, where incoming PCM frames are sent immediately to MI_AO_SendFrame instead of waiting for a complete uploaded body.
Add a separate endpoint, for example:
/play_audio_stream
that accepts continuous raw PCM:
8000 Hz
mono
signed 16-bit little-endian PCM
and feeds frames directly into MI_AO.
Optionally support WebSocket or UDP PCM input for lower latency:
/ws_audio_out
udp://camera:PORT
Expected use case:
Browser/laptop microphone
→ 8 kHz mono s16le PCM
→ Majestic streaming audio input endpoint
→ SigmaStar MI_AO
→ camera AUDIO_OUT
→ external amplifier/speaker
This would allow true two-way audio/talkback on SigmaStar OpenIPC cameras that already have working AUDIO_OUT hardware but do not expose an RTSP/ONVIF audio backchannel.
Thanks!