Skip to content

Feat/audio support#1205

Open
pennycoders wants to merge 452 commits intojetkvm:devfrom
pennycoders:feat/audio-support
Open

Feat/audio support#1205
pennycoders wants to merge 452 commits intojetkvm:devfrom
pennycoders:feat/audio-support

Conversation

@pennycoders
Copy link
Copy Markdown
Contributor

@pennycoders pennycoders commented Feb 16, 2026

Please go to the Preview tab ☝️ and select the appropriate sub-template:

See #718 for more details

…udio system for easy debugging and troubleshooting
…udio system for easy debugging and troubleshooting
Implement SIMD-optimized audio operations using ARM NEON for Cortex-A7 targets
Update Makefile and CI configuration to support NEON compilation flags
Add SIMD implementations for common audio operations including:
- Sample clearing and interleaving
- Volume scaling and format conversion
- Channel manipulation and balance adjustment
- Endianness swapping and prefetching
pennycoders and others added 14 commits December 8, 2025 20:23
The TC358743 HDMI receiver stops I2S clocks during silence periods,
causing corrupted samples (isolated ±32767 spikes) when clocks restart.
This manifests as audible clicks/pops during quiet audio passages.

Add NEON-optimized glitch filter that:
- Detects extreme values (>±32000) surrounded by low-amplitude neighbors
- Replaces glitches with interpolated values from adjacent samples
- Uses SIMD fast-path to skip clean audio chunks with zero overhead
- Only runs for HDMI capture (USB audio unaffected)

The filter processes 16 samples per iteration using ARM NEON intrinsics,
resulting in ~0.005% CPU overhead on Cortex-A7 at 1.2GHz.
The script was copied but never executed, causing Docker-based builds
(via dev_deploy.sh) to fail due to missing ALSA/Opus/SpeexDSP libraries.

Reported-by: J-Bu
Merged changes from dev branch including:
- Diagnostics logging and download feature (jetkvm#1078)
- E2E test infrastructure improvements
- UI component updates and refactoring
- Japanese keyboard layout support
- Various bug fixes and improvements

Resolved conflicts in:
- jsonrpc.go: Combined audio RPC handlers with diagnostics
- SettingsItem.tsx: Kept enhanced badge implementation
- WebRTCVideo.tsx: Kept isSecureContext() utility
- useJsonRpc.ts: Merged failsafe blocked methods
- devices.$id.settings.video.tsx: Kept EDID initialization logic
- devices.$id.tsx: Combined audio settings with E2E test handlers
- Fix prettier formatting in SettingsItem, WebRTCVideo, AudioPopover
- Replace react-hook-form watch() with useWatch() for React Compiler compatibility
- Remove unused dependencies from useCallback
- Add eslint-disable for known React ref false positive
Remove the ability to select between HDMI and USB for audio output.
Audio output now always uses the TC358743 HDMI capture device.

- Remove AudioOutputSource from config and RPC handlers
- Remove audio source UI dropdown and store state
- Clean up unused translations across all locales
- Update C audio comments to reflect HDMI-only output
Machine translate new audio-related keys to all supported languages:
da, de, es, fr, it, nb, sv, zh
- Add discrete note about potential reboot requirement after
  USB reconfiguration to restore audio input
- Clarify USB Audio labels to specify "Audio Input" since it
  refers to browser microphone -> target computer flow
- Update description to explain the feature better
@tvinhas
Copy link
Copy Markdown
Contributor

tvinhas commented Feb 17, 2026

I love this feature but I couldn't make it work. My main computer is a Macbook Pro and I KVM into a Windows box. Can't hear any audio from Windows in my Mac.

@joevans
Copy link
Copy Markdown

joevans commented Feb 18, 2026

I just purchased a JetKVM so this feature is very important for me.

@pennycoders are the instructions to try this feature out still spelled out here?
https://github.com/pennycoders/kvm/blob/feat/audio-support/DEVELOPMENT.md

@xMAC94x
Copy link
Copy Markdown

xMAC94x commented Mar 5, 2026

0001-add-a-chooser-between-HDMI-and-USB-audio.patch

can confirm this PR works and would love to see this merged.
@pennycoders It would be cool to be able to choose between HDMI and USB for the Audio Output, because some old computers have issue with HDMI audio(see patchfile)

@lgmys
Copy link
Copy Markdown

lgmys commented Mar 9, 2026

Can someone merge this already?

It's nice to get new keyboard layouts on a weekly basis, but "Audio-Support" sounds more valuable for all of us...

Can't hear anything right now!

@lucianmoldovanu
Copy link
Copy Markdown

While this makes its' way to the stable release, can the feature be tested in Developer Mode without custom deployments? If not, I would appreciate a short guideline regarding deploying custom versions, rollbacks etc before attempting it. I then assume a deployment from this feature branch would be required, assuming it's kept in sync otherwise with main branch. Thank you!

@boyinatree
Copy link
Copy Markdown

While this makes its' way to the stable release, can the feature be tested in Developer Mode without custom deployments? If not, I would appreciate a short guideline regarding deploying custom versions, rollbacks etc before attempting it. I then assume a deployment from this feature branch would be required, assuming it's kept in sync otherwise with main branch. Thank you!

A guide would be helpful since there doesn't seem to be any movement on this getting in a release 🤷‍♂️

@137137137
Copy link
Copy Markdown

Since everyone seems to be asking for a guide, you will need to clone the JetKVM repository for the firmware here.

From there, switch to the audio video branch, compile the firmware, then overwrite the firmware on your JetKVM. This in an inherently somewhat risky activity and can brick the device. If this happens, you'll need to rebuild the original firmware and write that over it again. There is a guide in the README.md of the repository I linked.

@hvownij
Copy link
Copy Markdown

hvownij commented Apr 5, 2026

Since everyone seems to be asking for a guide, you will need to clone the JetKVM repository for the firmware here.

From there, switch to the audio video branch, compile the firmware, then overwrite the firmware on your JetKVM. This in an inherently somewhat risky activity and can brick the device. If this happens, you'll need to rebuild the original firmware and write that over it again. There is a guide in the README.md of the repository I linked.

There is not an Audio video branch. Could you instead just link the actual branch? Id like to test this out.

@xMAC94x
Copy link
Copy Markdown

xMAC94x commented Apr 6, 2026

While this makes its' way to the stable release, can the feature be tested in Developer Mode without custom deployments? If not, I would appreciate a short guideline regarding deploying custom versions, rollbacks etc before attempting it. I then assume a deployment from this feature branch would be required, assuming it's kept in sync otherwise with main branch. Thank you!

For me the test was straight forward: download the repo . Enable the developer setting on the UI. Use the ./dev_deploy.sh script with the --install option (Note: without the --install option it seemed to not work). I did not need any changes from firmware repo.

So I am kinda confused what guide most people here are epxecting. Fiddling with hardware is kind of difficult to reproduce, I get it. maybe for individual debugging sessions we choose the discord there is a thread under feature-requests.
At least for me it was as easy as one could imagine. pluggin stuff into, installing branch, reboot it. go to settings. enable it (in case this helps someone).

@pennycoders
Copy link
Copy Markdown
Contributor Author

The latest dev build of the firmware was working. Once I get the time I will resume work on this. Some people have issues with the hdmi audio output, so I'll look into that

@markfrancisonly
Copy link
Copy Markdown

markfrancisonly commented Apr 10, 2026

It was easy to build and install the audio branch directly from a trixie debian host, thanks.

apt install -y nodejs npm
git clone -b 'feat/audio-support' https://github.com/jetkvm/kvm
./dev_deploy.sh -r <device_ip> -i --skip-native-build

Made a voice call today via jetkvm straight out-of-the box, brilliant! Only ran into one minor cosmetic issue with WebRTC negotiation, but eventually connected fine

image

It will be great to have this branch merged into dev with home assistant integration. @pennycoders, please enable sponsors on your github profile, I'd like to buy you a coffee. Cheers

@boyinatree
Copy link
Copy Markdown

The latest dev build of the firmware was working. Once I get the time I will resume work on this. Some people have issues with the hdmi audio output, so I'll look into that

I don't see an option for hdmi. Is it disabled in the latest code?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.