I'm running an old Linux (Valhalla kernel 2.4.18) virtual machine on a Linux Mint 20.2 (Uma). I want to passthrough the pc speaker from the virtual machine to the host. I looked at the documentation:
2.31. PC Speaker Passthrough
/dev/tty - Uses the terminal association of the VM process. VM needs to be started on a virtual console.
I'm not sure how to start the VM on a virtual console. I run a script to start the virtual machine:
VBoxManage setextradata global GUI/Input/MachineShortcuts "SeamlessMode=None"
VBoxManage setextradata AKCSC1 "GUI/Fullscreen" true
VBoxManage setextradata AKCSC1 "VBoxInternal/Devices/i8254/0/Config/PassthroughSpeaker" 100
VBoxManage startvm AKCSC1
The program on the virtual machine is trying to use /dev/tty on boot but can't open it. How do I start the VM on a virtual console and what do I need to do passthrough the PC speaker to the host?
Tim
PC Speaker Passthrough
-
- Posts: 428
- Joined: 2. May 2010, 14:19
- Primary OS: Fedora other
- VBox Version: PUEL
- Guest OSses: Windows, Linux, other Unixes
- Location: Artem S. Tashkinov
- Contact:
Re: PC Speaker Passthrough
The documentation tells you need to start VirtualBox not from the start menu but in any console application (which is capable of using the speaker), e.g. Gnome Terminal, xfce4-terminal, Konsole, etc.torourke55 wrote:VM needs to be started on a virtual console.
-
- Volunteer
- Posts: 5677
- Joined: 14. Feb 2019, 03:06
- Primary OS: Mac OS X other
- VBox Version: PUEL
- Guest OSses: Linux, Windows 10, ...
- Location: Germany
Re: PC Speaker Passthrough
torourke55 wrote:VM needs to be started on a virtual console.
No. An X11- or Wayland-based terminal application is not a Virtual console.birdie wrote:The documentation tells you need to start VirtualBox not from the start menu but in any console application
-
- Posts: 3
- Joined: 19. Sep 2021, 07:37
Re: PC Speaker Passthrough
Hi, thanks for the reply. I have started the VM from the terminal and also from a launcher with terminal=true and I see no difference. The VM still can't open the /dev/tty device and I get no bell tone. The Host terminal gets a bell tone if I echo -e \\a or even if I hit backspace with no chars entered.
I also tried running it directly in the terminal window and ran my script in the terminal window with and & at the end to spawn it (./Start-AKCSC1-Windowed &).
This is what I get in the log for the virtual machine for the PIT: lines after launching it a terminal:
00:00:01.210720 PIT: speaker: cannot open "/dev/input/by-path/platform-pcspkr-event-spkr", errno=13
00:00:01.210751 PIT: speaker: cannot open "/dev/tty", errno=6
00:00:01.210760 PIT: speaker: cannot open "/dev/tty0", errno=13
00:00:01.210770 PIT: speaker: cannot open "/dev/vc/0", errno=2
00:00:01.210779 PIT: speaker: cannot open "/dev/tty", errno=6
00:00:01.210784 PIT: speaker: no emulation possible
I also tried running it directly in the terminal window and ran my script in the terminal window with and & at the end to spawn it (./Start-AKCSC1-Windowed &).
This is what I get in the log for the virtual machine for the PIT: lines after launching it a terminal:
00:00:01.210720 PIT: speaker: cannot open "/dev/input/by-path/platform-pcspkr-event-spkr", errno=13
00:00:01.210751 PIT: speaker: cannot open "/dev/tty", errno=6
00:00:01.210760 PIT: speaker: cannot open "/dev/tty0", errno=13
00:00:01.210770 PIT: speaker: cannot open "/dev/vc/0", errno=2
00:00:01.210779 PIT: speaker: cannot open "/dev/tty", errno=6
00:00:01.210784 PIT: speaker: no emulation possible
-
- Posts: 3
- Joined: 19. Sep 2021, 07:37
Re: PC Speaker Passthrough
No. An X11- or Wayland-based terminal application is not a Virtual console
I think you're right but I'm trying to figure out how to run the VM in this virtual console. I wonder if the output needs to be redirected to /dev/tty?
I think you're right but I'm trying to figure out how to run the VM in this virtual console. I wonder if the output needs to be redirected to /dev/tty?
-
- Posts: 428
- Joined: 2. May 2010, 14:19
- Primary OS: Fedora other
- VBox Version: PUEL
- Guest OSses: Windows, Linux, other Unixes
- Location: Artem S. Tashkinov
- Contact:
Re: PC Speaker Passthrough
Should probably work regardless. Have you actually tested to be so confident?fth0 wrote:torourke55 wrote:VM needs to be started on a virtual console.No. An X11- or Wayland-based terminal application is not a Virtual console.birdie wrote:The documentation tells you need to start VirtualBox not from the start menu but in any console application
-
- Volunteer
- Posts: 5677
- Joined: 14. Feb 2019, 03:06
- Primary OS: Mac OS X other
- VBox Version: PUEL
- Guest OSses: Linux, Windows 10, ...
- Location: Germany
Re: PC Speaker Passthrough
Did I say anything about what works and what doesn't?birdie wrote:Should probably work regardless. Have you actually tested to be so confident?
I just wanted to point out that your statement is either not correct or at least misleading (if you're talking about 9.30. PC Speaker Passthrough in the VirtualBox User Manual), to make the OP try the documented method first. When it works from within a virtual console, the OP can try it from within a terminal application later on.
In hindsight, instead of "No" I should have written "I don't think so", sounds more polite.
-
- Volunteer
- Posts: 5677
- Joined: 14. Feb 2019, 03:06
- Primary OS: Mac OS X other
- VBox Version: PUEL
- Guest OSses: Linux, Windows 10, ...
- Location: Germany
Re: PC Speaker Passthrough
On a second thought, after re-reading 9.30. PC Speaker Passthrough, the VirtualBox User Manual isn't clear enough:
If using a virtual console would be the only use case, you could only start a VM headless, since the GUI (X11, Wayland) is not available there. That would have been worth mentioning IMO.
Regarding the errno values:
Permission denied usually indicates that the device exists, so I'd suggest to concentrate on the permissions.
If using a virtual console would be the only use case, you could only start a VM headless, since the GUI (X11, Wayland) is not available there. That would have been worth mentioning IMO.
Regarding the errno values:
Code: Select all
#define ENOENT 2 /* No such file or directory */
#define ENXIO 6 /* No such device or address */
#define EACCES 13 /* Permission denied */