{"record":{"id":"98e667e760e4e598","repo":"lima-vm/lima","slug":"unexpected-audio-device-q","errorCode":null,"errorMessage":"unexpected audio device %#q","messagePattern":"unexpected audio device %#q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/driver/vz/vm_darwin.go","lineNumber":801,"sourceCode":"\tcase \"vz\", \"default\":\n\t\toutputStream, err := vz.NewVirtioSoundDeviceHostOutputStreamConfiguration()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create host audio output stream: %w\", err)\n\t\t}\n\n\t\tsoundDeviceConfiguration, err := vz.NewVirtioSoundDeviceConfiguration()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"failed to create virtio sound device configuration: %w\", err)\n\t\t}\n\t\tsoundDeviceConfiguration.SetStreams(outputStream)\n\t\tconfig.SetAudioDevicesVirtualMachineConfiguration([]vz.AudioDeviceConfiguration{\n\t\t\tsoundDeviceConfiguration,\n\t\t})\n\t\treturn nil\n\tcase \"\", \"none\":\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"unexpected audio device %#q\", *inst.Config.Audio.Device)\n\t}\n}\n\nfunc attachOtherDevices(inst *limatype.Instance, vmConfig *vz.VirtualMachineConfiguration) error {\n\tentropyConfig, err := vz.NewVirtioEntropyDeviceConfiguration()\n\tif err != nil {\n\t\treturn err\n\t}\n\tvmConfig.SetEntropyDevicesVirtualMachineConfiguration([]*vz.VirtioEntropyDeviceConfiguration{\n\t\tentropyConfig,\n\t})\n\n\tconfiguration, err := vz.NewVirtioTraditionalMemoryBalloonDeviceConfiguration()\n\tif err != nil {\n\t\treturn err\n\t}\n\tvmConfig.SetMemoryBalloonDevicesVirtualMachineConfiguration([]vz.MemoryBalloonDeviceConfiguration{\n\t\tconfiguration,","sourceCodeStart":783,"sourceCodeEnd":819,"githubUrl":"https://github.com/lima-vm/lima/blob/dd909d0973cd84fa35f9e1693181b4585ea616c1/pkg/driver/vz/vm_darwin.go#L783-L819","documentation":"attachAudio validates the audio.device field in the Lima config and throws this error when the value is not one of the recognized options (\"\", \"none\", or a supported device like \"vboxhda\"/\"pcspk\"). It is a user configuration validation error raised during createVM.","triggerScenarios":"Config field audio.device is set to a string other than \"\", \"none\", \"vboxhda\", or \"pcspk\" (e.g. a typo or a value copied from a QEMU-oriented config).","commonSituations":"Typos like \"scream\" or \"pulseaudio\"; copying QEMU audio settings into a VZ-instance config; YAML indentation mistakes leaving an unexpected value.","solutions":["Set audio.device to a supported value: \"none\" (default), \"vboxhda\", or \"pcspk\"","Remove the audio.device field entirely to use the default (\"none\")","Run `limactl validate <instance.yaml>` before starting to catch invalid enum values"],"exampleFix":"// before (lima.yaml)\naudio:\n  device: pulseaudio\n// after\naudio:\n  device: none","handlingStrategy":"validation","validationCode":"validAudio := map[string]bool{\"\":true,\"none\":true,\"vboxhda\":true,\"pcspk\":true}\nif !validAudio[audioDevice] {\n    return fmt.Errorf(\"audio.device %q not supported\", audioDevice)\n}","typeGuard":null,"tryCatchPattern":"if err := start(); err != nil && strings.Contains(err.Error(), \"unexpected audio device\") {\n    // fix the audio.device field and retry\n}","preventionTips":["Only use documented values: \"none\", \"vboxhda\", \"pcspk\"","Run `limactl validate` before `limactl start`","Don't copy QEMU audio settings into VZ instance configs"],"tags":["audio","config-validation","vz"],"backgroundTag":"invalid-enum-config-value","analyzedSha":"dd909d0973cd84fa35f9e1693181b4585ea616c1","analyzedAt":"2026-09-01T14:24:59.842Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}