12

I am trying to toggle num-lock on my Raspberry Pi 2 running Raspbian jessie, I need it to run during the initial CLI boot up (before <hostname> login: or startx), I have tried numlockx and setleds but none work until logged in. I already have a script that runs during boot and was hoping to incorporate it into the existing script.

In case you were wondering it is so I can have num-lock for my password.

migrated from stackoverflow.com Nov 30 '15 at 13:39

This question came from our site for professional and enthusiast programmers.

6

Yup. There's a way.

  1. Open up /etc/kbd/config with your favorite editor.

  2. Search for a line that says LEDS=+num. It should be on line 67 if I'm not mistaken.

  3. Uncomment it. I assume you know how to uncomment since I think you know scripting.

  4. Profit.

  • thanks I will try it now and get back to you in a few minutes – absenthecon Dec 6 '15 at 12:09
  • 1
    It worked a charm! Now I just have to get used to not pressing numlock – absenthecon Dec 6 '15 at 12:13
  • 1
    I have my comfy chair but I need the pi because I'm live testing – absenthecon Dec 6 '15 at 14:49
  • 1
    imgur.com/W3kEJgr – absenthecon Dec 6 '15 at 14:50
  • 2
    I don't have any file at /etc/kbd/config. I tried sudo touch /etc/kbd/config, but it complained that there was "No such file or directory". – Eptin Nov 16 '17 at 22:28
4

While this isn't directly answering the Raspbian Jessie question, for those other Googler's who run Raspbian Stretch, which doesn't have /etc/kbd/config, here's the solution:

  • Install numlockx: sudo apt-get install numlockx
  • Edit this file: sudo nano /usr/share/lightdm/lightdm.conf.d/01_debian.conf
  • At the end of that file, add this line: greeter-setup-script=/usr/bin/numlockx on
  • Save the file and reboot, and you NumLock key should still be on

Sources:

https://www.raspberrypi.org/forums/viewtopic.php?t=192383

which in turn cites:

https://unix.stackexchange.com/questions/375920/numlock-on-startup-on-linux-mint-18-2

  • Good to know there is a solution for X. But sadly that does not help in Raspbian Light. :( – kwasmich May 28 '18 at 9:03
  • 1
    Note also this will not work, as per the question, "before <hostname> login: or startx". It will also not work at all unless you are using lightdm (the GUI login). – goldilocks May 28 '18 at 12:25
2

/etc/kbd/config has been removed in Raspbian Stretch, but you can set the numlock state using /usr/bin/setleds instead.

For example, to enable numlock in all VTs:

#!/bin/bash
# Turn Numlock on for the TTYs:
for tty in /dev/tty[1-6]; do
    /usr/bin/setleds -D +num < "$tty";
done

You put this script in /usr/local/bin/numlock, and invoke it at boot time, for example using a systemd service (/etc/systemd/system/numlock.service):

[Unit]
Description=numlock

[Service]
ExecStart=/usr/bin/numlock
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Enable the service with systemctl enable numlock.service.

Source: http://forums.debian.net/viewtopic.php?t=134006#p650222

  • 1
    Note that this will only work for CLI. It does not work on Stretch on the UI boot. – aaronburro Mar 22 at 16:25
-4

Command line:

sed -i 's/#LEDS=+num/LEDS=+num/' '/etc/kbd/config'
  • How exactly does this work? How would the OP get this to run before setting the hostname and before startx? – Steve Robillard Apr 20 '16 at 22:28
  • You just run it once, it modifies the file forever. It is the programmatic equivalent to the manual steps up there. – Kevin Bougé Apr 21 '16 at 13:53
  • Most sysadmins like to know how the programs/scripts in their systems work. Serious ones audit everything that needs to run in a mission-critical environment. People also like to make sure that random scripts/commands they get online are not malicious. This is why we want to know what this does, not for us, but for the laypeople. – Gene Nov 18 '17 at 11:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.