← Algengar spurningar

Algengar spurningar eru skrifaðar á ensku og hollensku; þær birtast á ensku.

Algengar spurningar

Sound

FAQ › EUZOS Desktop › Sound · Nederlands

What is it?

EUZOS has its own driver for Intel High Definition Audio (PCI class 04:03), written from the HDA 1.0a specification. It plays the boot and login sounds, test tones, the volume tick and the key click of the on-screen keyboard, and gives Linux apps (Chromium) sound and microphone through its own ALSA kernel interface (/dev/snd). The volume is set with the speaker icon in the top bar, the volume keys or the sound console command.

Sound is x86-64 only and EUZOS Desktop only (on ARM64 sound says "only on x86-64"; EUZOS Server refuses the command, see Server console).

How do I…?

How do I change the volume?

Click the speaker icon in the top bar and drag the slider, use the volume keys of the keyboard, or type sound volume <0-100> in the console. All three set the same value. A new volume also cancels muting. sound volume without a number shows the current value (for example volume 80 % or volume 80 % (muted)).

How do I mute the sound?

sound mute toggles muting (it prints muted or no longer muted). The mute key on the keyboard does the same.

Which volume keys work?

  • PS/2 (scancode set 1): E0 30 volume up, E0 2E volume down, E0 20 mute; many laptops send their Fn keys this way.
  • USB keyboards in the boot protocol: HID codes 0x80 (Volume Up), 0x81 (Volume Down) and 0x7F (Mute).
  • Not yet: the USB consumer page (0xE9/0xEA/0xE2, used by most USB media keys) and Fn keys that go through ACPI (see docs/SOUND.md).

On a graphical screen a volume key shows the volume panel briefly (1.5 s); on the console only the volume changes.

How do I test whether the speakers work?

sound tone [hz] [ms] plays a sine tone (default 440 Hz for 1000 ms; range 20–20000 Hz and 1–60000 ms). sound stop stops playback. sound alone shows the controller, codec, widgets and the chosen output path.

How do I turn the boot sound off or choose another one?

sound boot off turns it off, sound boot on turns it on again, sound boot <variant> chooses one of sunrise, chord (the default) or bell (legacy Dutch names zonsopgang, akkoord, klok are still accepted). sound boot play [variant] plays it now. The choice is written to \EOS\FW\SOUND.TXT (legacy name GELUID.TXT, still read). boot off in that file turns off both the boot sound (at the login screen) and the login sound (sunrise, when the desktop appears).

How do I test the microphone?

sound capture [ms] records for the given time (default 2000 ms, range 10–30000 ms) and shows the level (peak and rms in dBFS) and frames per second. In the desktop: Settings › Camera and microphone › Test microphone (see Camera). While the microphone records, the red microphone label is shown in the bar.

Why does the key click or the volume tick not sound?

The tick (1 kHz, 30 ms, on releasing the slider and on every volume key) does not sound when muted or at 0 %. sound tick off turns it off until the next reboot. The key click of the on-screen keyboard is a profile setting (Settings › Keyboard › Key sound, see Input).

Why is there no speaker icon?

There is no sound card the driver can use (QEMU without intel-hda, ARM64, or only the HDMI/DP audio of the processor, which is skipped), or setting up the controller failed. sound shows why.

How do I start the sound driver again?

sound reset stops playback and capture, forgets the controller and sets it up again (it shows the info afterwards). Known limitation: the old DMA memory is left behind.

Details

  • Lazy setup: like AHCI, the controller is set up on first use (sound, a tone, the boot sound), not during boot. The boot sound runs on its own thread; booting does not wait for it.
  • Controller choice: the HDMI/DP audio of the processor (for example Haswell 8086:0a0c) is skipped and reported. PCI power state D0 via the PM capability, on Intel TCSEL = 0 and no-snoop off, interrupts off (the driver polls).
  • Commands to the codec: CORB/RIRB ring buffers; if the CORB does not answer, the immediate command interface.
  • Playback: first output stream, 48 kHz 16-bit stereo, a 32 KiB ring in 8 BDL entries; the sound thread fills the ring up to 64 ms ahead from the mixer and stops the stream after 3 s of silence. Jack detection only happens when playback starts (plugging in headphones while playing does not switch over; sound stop and playing again does).
  • Capture: input stream SD0, tag 2, 64 KiB ring; a plugged-in microphone jack takes precedence over the internal microphone. The first 250 ms after each start are silenced (the pop of digital microphones).
  • The boot sounds are computed in libs/hda/src/sound.rs with integers (no recorded audio): sunrise (G3-D4-G4-B4, 2.3 s), chord (Fmaj9, 2.2 s, default), bell (A4 and E5 on A3, 2.0 s). Peak at -6.3 dBFS. The variant names are English since 27-10-2026, in SOUND.TXT and on the console; the legacy Dutch names (zonsopgang, akkoord, klok) are still read.
  • Volume state lives apart from the controller (VOLUME, MUTED in kernel/src/hda.rs), default 80 %, linear in dB (0.4 dB per percent), until the reboot (planned: a profile setting).
  • ALSA for Linux apps: /dev/snd/controlC0, /dev/snd/pcmC0D0p (playback, permission PERM_SOUND) and /dev/snd/pcmC0D0c (capture, only with a microphone, permission PERM_MICROPHONE: Chromium and run +mic). Formats S16_LE, S24_LE, S32_LE, FLOAT_LE; 1–2 channels; 8000 to 96000 Hz; the kernel converts and resamples to 48 kHz. Without a sound card there is no /dev/snd and Chromium has no sound.
  • A capture stream holds a privacy indicator handle (privacy::begin(Kind::Microphone, …)), see Camera.

Reference

Console commands

CommandArgumentsWhat it does
sound—controller, codec(s), streams, widgets, outputs and paths, inputs (the chosen one marked [on])
sound tone[hz] [ms] (20–20000, 1–60000; default 440 1000)play a test tone; legacy alias toon
sound volume[0-100] (a trailing % is allowed)show or set the volume; a new value cancels muting
sound mute—toggle muting; legacy alias demp
sound tickon | offthe tick on a volume change, until the reboot; hidden aliases click (an older help text) and legacy tikje, aan, uit
sound boot—show the boot sound setting and the variants
sound booton | off | sunrise | chord | bellwrite the setting to SOUND.TXT; legacy aliases opstart, aan, uit, zonsopgang, akkoord, klok
sound boot play[variant]play a variant now; legacy alias speel
sound capture[ms] (10–30000, default 2000)record and show the level (peak/rms dBFS, frames/s); legacy alias opname
sound alsa—the open ALSA streams and whether the microphone is capturing
sound stop—stop playback
sound reset—stop everything and set up the controller again; hidden aliases again (an older help text) and legacy opnieuw
run +mic <name>start a test program with microphone permission (see Diagnostics)

Legacy command name: geluid → sound. help shows the same wording as this table (tick on|off, reset).

Functions and modules

Function / moduleRole
kernel::hda::commandthe sound console command
kernel::hda::boot_soundplay the boot sound once per boot (own thread)
kernel::hda::login_soundplay sunrise when the desktop appears (called from desktop::start)
kernel::hda::state / set_state / apply_volumevolume and mute state; apply to the amplifier
kernel::hda::presentis there a usable sound card (no icon without)
kernel::hda::tick / key_clickthe volume tick; the on-screen keyboard click (8 ms, 2 kHz)
kernel::hda::write_pcm / alsa_start / queued_frames / underrunsthe link with ALSA playback
kernel::hda::capture_start / capturing / meter_on / meter_take / meter_offcapture and the level meter (Test microphone)
kernel::hda::microphones / has_microphone / input_name / codec_namewhat Settings › Camera and microphone shows
kernel::volume_buttonthe speaker icon, the slider panel, the volume keys (set, request_click, work)
kernel::linux::snd/dev/snd for Linux programs
euzos_hda::codec, path, input, pcm (Mixer, Ring, Tone), verbcodec reading, output/input path choice, mixing, verbs (no hardware; tested on the Mac with make sound-test)
euzos_hda::sound (Variant, Boot, parse_setting, setting_text)the boot sounds and the SOUND.TXT format
euzos_alsa (abi, params, stream, convert, ctl)the ALSA ioctl ABI, hardware parameters, streams, conversion, mixer elements

Config files

FileKeyValuesMeaning
\EOS\FW\SOUND.TXT (legacy name GELUID.TXT, still read)boot (also boot=; legacy opstart)off | on | sunrise | chord | bell (legacy uit, aan, zonsopgang, akkoord, klok)boot and login sound off, on (default chord) or a variant; # is a comment; case does not matter; no line = on with the default

Since 27-10-2026 EUZOS writes English config file names, keys, values and confirmation words (for example WIPE-…, environment= in PROFILE.TXT); the old Dutch names (marked legacy here) are still read and accepted (docs/ENGLISH.md).

Protocol messages and formats

FormatDescription
SOUND.TXT as written by sound boot# EUZOS: the boot sound (boot off | boot sunrise|chord|bell) followed by boot <value>, CRLF line ends
ALSA PCM ioctlsPVERSION (2.0.14), INFO, HW_REFINE, HW_PARAMS, SW_PARAMS, PREPARE, START, DROP, DRAIN, PAUSE, RESET, XRUN, REWIND, FORWARD, HWSYNC, DELAY, STATUS, STATUS_EXT, WRITEI_FRAMES, READI_FRAMES, SYNC_PTR, mmap; access RW_INTERLEAVED/MMAP_INTERLEAVED
/proc/asound/{cards,devices,pcm,version}present for programs that look there

See also

  • docs/SOUND.md: the full design, hardware notes and test results
  • docs/DESKTOP-DESIGN.md, chapter 6 (the volume button)
  • docs/CHROMIUM.md, step C.7 (ALSA)
  • Camera (microphone test, privacy indicator), Input (key click)