Serial Console: Difference between revisions
imported>Mic92 No edit summary |
imported>Clerie No edit summary |
||
Line 1: | Line 1: | ||
{{expansion}} | {{expansion}} | ||
== Use serial interface as TTY == | |||
To use a serial device <code>ttyS0</code> as a TTY to log into the device, you have to tell the kernel and you boot loader about the serial configuration. | |||
An example for GRUB bootloader: | |||
boot.kernelParams = [ "console=ttyS0,115200n8" ]; | |||
boot.loader.grub.extraConfig = " | |||
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 | |||
terminal_input serial | |||
terminal_output serial | |||
"; | |||
== Unprivileged access to serial device == | |||
Serial devices under NixOS are created with the group <code>dialout</code> by default. | |||
All users that are part of the group <code>dialout</code> can access serial devices. | |||
Add a user to group <code>dialout</code>: | |||
users.users.<name>.extraGroups = [ "dialout" ]; | |||
== Tips == | == Tips == |
Revision as of 18:26, 17 December 2023
Use serial interface as TTY
To use a serial device ttyS0
as a TTY to log into the device, you have to tell the kernel and you boot loader about the serial configuration.
An example for GRUB bootloader:
boot.kernelParams = [ "console=ttyS0,115200n8" ]; boot.loader.grub.extraConfig = " serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 terminal_input serial terminal_output serial ";
Unprivileged access to serial device
Serial devices under NixOS are created with the group dialout
by default.
All users that are part of the group dialout
can access serial devices.
Add a user to group dialout
:
users.users.<name>.extraGroups = [ "dialout" ];
Tips
Serial console wrapping
The remote serial console has no knowledge of your local console. This means that it will wrap with safe defaults.
You can configure the columns/rows of your serial console using stty.
In a console sized like yours, e.g. a new tab or tmux window:
$ echo "stty rows $(tput lines) cols $(tput cols)"
This will give you the exact invocation for your current terminal size.
In case tmux is used an alternative is to add the following snippet to the tmux.conf
bind R run "echo \"stty columns $(tmux display -p \#{pane_width}); stty rows $(tmux display -p \#{pane_height})\" | tmux load-buffer - ; tmux paste-buffer"
In this case fixing the terminal size can be achieved by pressing R.