Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

btnx not starting at boot #7

Open
LukasAV opened this issue Jun 29, 2019 · 11 comments
Open

btnx not starting at boot #7

LukasAV opened this issue Jun 29, 2019 · 11 comments

Comments

@LukasAV
Copy link

LukasAV commented Jun 29, 2019

Hi,
I have btnx installed and it works fine, however it does not start at boot and I have execute it manually after every boot. Mys /var/log/syslog shows it is trying to start:

Jun 30 08:02:14 lukas-mint btnx[885]: Starting btnx : Button Extension - mouse button rerouter daemon
Jun 30 08:02:14 lukas-mint btnx[885]:  btnx: uinput modprobed successfully.
Jun 30 08:02:14 lukas-mint btnx[885]:  btnx: Opening config file: /etc/btnx/btnx_config_Default
Jun 30 08:02:14 lukas-mint btnx[885]:  btnx: No configured mouse handler detected: No such file or directory
Jun 30 08:02:14 lukas-mint btnx[885]:  btnx: Looped through all configurations. Stopping.
Jun 30 08:02:14 lukas-mint btnx[885]:  btnx: Configuration file error.
Jun 30 08:02:14 lukas-mint btnx[885]: btnx failed to start (error code 150) - try btnx-config

but sudo /etc/init.d/btnx start works fine as well.
I am running Linux Mint 18.1 Cinnamon 64-bit.
Any ideas what is going wrong?

@cdobrich
Copy link
Owner

That is really strange, because I have no problems with it starting running on 18.10 (and it's worked on every instance of Ubuntu I've used, which is dating back a long time now).

What steps did you use to install/build the program?

Can you show the contents of the /etc/init.d/btnx file?

@LukasAV
Copy link
Author

LukasAV commented Jul 12, 2019

Thanks for your reply. I installed the .deb from Launchpad.
Contents of /etc/init.d/btnx:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          btnx
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Mouse button rerouter daemon.
# Description:       Captures events from the mouse and
#                    reroutes them through uinput as other user-defined events.
### END INIT INFO

## BEGIN CHKCONFIG
# chkconfig: 2345 49 49
# description: Mouse button rerouter daemon.
## END CHKCONFIG

# Author: Olli Salonen <[email protected]>

# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script

# Note that some variables are replaced by Makefile (see sed command, data/Makefile.am).
# If variables are not filled in, then this is a template file.
PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin
DESC="Button Extension - mouse button rerouter daemon"
# Name of this program:
NAME=btnx
# Path of the executable:
DAEMON=/usr/sbin/btnx
# Name of this script (full path):
SCRIPTNAME=/etc/init.d/btnx
FAIL_STATUS=6
# Set to -l if btnx output is directed to syslog
ARG_SYSLOG=
ARG_CONFIG=

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 5

# Check arguments (configuration file name)
if [ -z $2 ]; then # empty string
	ARG_CONFIG=""
else
	ARG_CONFIG="-c $2"
fi

#
# Function that checks event handlers. Prevents
# udev loading hang.
#
check_handlers()
{
	ls /dev/event* > /dev/null 2> /dev/null
	[ $? = 0 ] && return 0
	ls /dev/input/event* > /dev/null 2> /dev/null
	[ $? = 0 ] && return 0
	ls /dev/misc/event* > /dev/null 2> /dev/null
	[ $? = 0 ] && return 0

	echo "No input event handlers found. Start blocked."

	return 1
}

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	
	$DAEMON -b $ARG_SYSLOG $ARG_CONFIG
	return $?
}

#
# Function that stops the daemon/service
#
do_stop()
{
	$DAEMON -k
	return $?
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	
	return 0
}

case "$1" in
  start)
	echo "Starting $NAME :" "$DESC" >&2
	check_handlers
	[ $? -ne 0 ] && exit 1
	do_start
	RET=$?
	case "$RET" in
		0)
			echo "btnx started"
			exit 0
			;;
		*)
			echo "btnx failed to start (error code $RET) - try btnx-config"
			exit 0
			;;
	esac
	;;
  stop)
	echo "Stopping $NAME :" "$DESC" >&2
	do_stop
	case "$?" in
		0|1)
			echo "btnx successfully stopped"
			exit 0
			;;
		2)
			echo "btnx failed to stop"
			exit 0
			;;
	esac
	;;
  restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	echo "Restarting $NAME :" "$DESC" >&2
	do_stop
	case "$?" in
	  0|1)
		echo "btnx successfully stopped"
		do_start
		RET=$?
		case "$RET" in
			0)
				echo "btnx successfully started"
				exit 0 ;;
			*)
				echo "btnx failed to start during restart"
				exit 0 ;;
		esac
		;;
	  *)
	  	# Failed to stop
		echo "btnx failed to stop during restart"
		exit $FAIL_STATUS ;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac

:

@cdobrich
Copy link
Owner

Thanks for your reply. I installed the .deb from Launchpad.

Ah, that could be a problem! That code and .deb package build hasn't been updated in almost 10 years.

The code on Launchpad was partially lost before I took over maintaining the project. That's why it has moved to GitHub.

I will have a look at the startup script. Normal Ubuntu operates on runlevel 5, so I want to see what your system configuration is for runlevel 5. Please share the output of this command:

ls -1l /etc/rc5.d/

Nevertheless you might want to try building and installing the code from these github repositories. Not a lot has changed but I have fixed a few bugs that cropped up along the way.

I wonder if there's an easy way to create a .deb package, or even better might be an .appImage file. I've never looked into those.

@LukasAV
Copy link
Author

LukasAV commented Jul 12, 2019

I am sorry, I did not notice the build was that old. I will try to build the repository.
Nevertheless, here is the output of ls -1l /etc/rc5.d/:

lrwxrwxrwx 1 root root  29 Nov 17  2018 K01apache-htcacheclean -> ../init.d/apache-htcacheclean
-rw-r--r-- 1 root root 677 Feb  5  2016 README
lrwxrwxrwx 1 root root  24 May  5  2018 S01binfmt-support -> ../init.d/binfmt-support
lrwxrwxrwx 1 root root  14 Jun 29 22:28 S01btnx -> ../init.d/btnx
lrwxrwxrwx 1 root root  19 May  5  2018 S01cgmanager -> ../init.d/cgmanager
lrwxrwxrwx 1 root root  22 May  5  2018 S01lvm2-lvmetad -> ../init.d/lvm2-lvmetad
lrwxrwxrwx 1 root root  23 May  5  2018 S01lvm2-lvmpolld -> ../init.d/lvm2-lvmpolld
lrwxrwxrwx 1 root root  20 Feb  9 18:50 S01mintsystem -> ../init.d/mintsystem
lrwxrwxrwx 1 root root  17 Dec 21  2018 S01mongodb -> ../init.d/mongodb
lrwxrwxrwx 1 root root  14 Jun 15  2018 S01nmbd -> ../init.d/nmbd
lrwxrwxrwx 1 root root  20 Nov 28  2018 S01php7.0-fpm -> ../init.d/php7.0-fpm
lrwxrwxrwx 1 root root  17 May  5  2018 S01rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root  21 Jun 15  2018 S01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root  13 Aug 14  2018 S01tlp -> ../init.d/tlp
lrwxrwxrwx 1 root root  15 May  5  2018 S01uuidd -> ../init.d/uuidd
lrwxrwxrwx 1 root root  17 Nov 17  2018 S02apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root  15 Nov 17  2018 S03acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root  17 Nov 17  2018 S03anacron -> ../init.d/anacron
lrwxrwxrwx 1 root root  17 Nov 17  2018 S03cgproxy -> ../init.d/cgproxy
lrwxrwxrwx 1 root root  14 Nov 17  2018 S03cron -> ../init.d/cron
lrwxrwxrwx 1 root root  14 Nov 17  2018 S03dbus -> ../init.d/dbus
lrwxrwxrwx 1 root root  16 Nov 17  2018 S03docker -> ../init.d/docker
lrwxrwxrwx 1 root root  17 Nov 17  2018 S03hddtemp -> ../init.d/hddtemp
lrwxrwxrwx 1 root root  20 Nov 17  2018 S03irqbalance -> ../init.d/irqbalance
lrwxrwxrwx 1 root root  20 Nov 17  2018 S03kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  21 Nov 17  2018 S03loadcpufreq -> ../init.d/loadcpufreq
lrwxrwxrwx 1 root root  13 Jun  2 06:16 S03ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root  15 Nov 17  2018 S03rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root  23 Nov 17  2018 S03smartmontools -> ../init.d/smartmontools
lrwxrwxrwx 1 root root  27 Nov 17  2018 S03speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx 1 root root  18 Nov 17  2018 S03thermald -> ../init.d/thermald
lrwxrwxrwx 1 root root  22 Nov 17  2018 S04avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root  19 Nov 17  2018 S04bluetooth -> ../init.d/bluetooth
lrwxrwxrwx 1 root root  22 Nov 17  2018 S04cpufrequtils -> ../init.d/cpufrequtils
lrwxrwxrwx 1 root root  17 Nov 17  2018 S05openvpn -> ../init.d/openvpn
lrwxrwxrwx 1 root root  14 Nov 17  2018 S06cups -> ../init.d/cups
lrwxrwxrwx 1 root root  22 Nov 17  2018 S06cups-browsed -> ../init.d/cups-browsed
lrwxrwxrwx 1 root root  15 Nov 17  2018 S06saned -> ../init.d/saned
lrwxrwxrwx 1 root root  14 Nov 17  2018 S07smbd -> ../init.d/smbd
lrwxrwxrwx 1 root root  21 Nov 17  2018 S08grub-common -> ../init.d/grub-common
lrwxrwxrwx 1 root root  18 Nov 17  2018 S08ondemand -> ../init.d/ondemand
lrwxrwxrwx 1 root root  18 Nov 17  2018 S08plymouth -> ../init.d/plymouth
lrwxrwxrwx 1 root root  18 Nov 17  2018 S08rc.local -> ../init.d/rc.local


@LukasAV
Copy link
Author

LukasAV commented Jul 12, 2019

So I built the repository without errors, however the problem stayed exactly the same. btnx does not start at boot, but sudo btnx works.
New /var/log/syslog:

Jul 12 11:12:36 lukas-mint systemd-udevd[373]: unknown key 'BUS' in /etc/udev/rules.d/99-btnx.rules:1
Jul 12 11:12:36 lukas-mint systemd-udevd[373]: invalid rule '/etc/udev/rules.d/99-btnx.rules:1'
Jul 12 11:12:36 lukas-mint systemd-udevd[373]: unknown key 'BUS' in /etc/udev/rules.d/99-btnx.rules:2
Jul 12 11:12:36 lukas-mint systemd-udevd[373]: invalid rule '/etc/udev/rules.d/99-btnx.rules:2'
Jul 12 11:12:36 lukas-mint btnx[864]: Starting btnx : Button Extension - mouse button rerouter daemon
Jul 12 11:12:36 lukas-mint btnx[864]:  btnx: uinput modprobed successfully.
Jul 12 11:12:36 lukas-mint btnx[864]:  btnx: Opening config file: /etc/btnx/btnx_config_Default
Jul 12 11:12:36 lukas-mint btnx[864]:  btnx: No configured mouse handler detected: No such file or directory
Jul 12 11:12:36 lukas-mint btnx[864]:  btnx: Looped through all configurations. Stopping.
Jul 12 11:12:36 lukas-mint btnx[864]:  btnx: Configuration file error.
Jul 12 11:12:36 lukas-mint systemd[1]: btnx.service: Control process exited, code=exited status=150
Jul 12 11:12:36 lukas-mint btnx[864]: btnx failed to start (error code 150)
Jul 12 11:12:36 lukas-mint systemd[1]: btnx.service: Unit entered failed state.
Jul 12 11:12:36 lukas-mint systemd[1]: btnx.service: Failed with result 'exit-code'.

New /etc/init.d/btnx:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          btnx
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Mouse button rerouter daemon.
# Description:       Captures events from the mouse and
#                    reroutes them through uinput as other user-defined events.
### END INIT INFO

## BEGIN CHKCONFIG
# chkconfig: 2345 49 49
# description: Mouse button rerouter daemon.
## END CHKCONFIG

# Author: Olli Salonen <[email protected]>

# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script

# Note that some variables are replaced by Makefile (see sed command, data/Makefile.am).
# If variables are not filled in, then this is a template file.
PATH=$PATH:/sbin:/usr/sbin:/bin:/usr/bin
DESC="Button Extension - mouse button rerouter daemon"
# Name of this program:
NAME=btnx
# Path of the executable:
DAEMON=/usr/local/sbin/btnx
# Name of this script (full path):
SCRIPTNAME=/etc/init.d/btnx
FAIL_STATUS=6
# Set to -l if btnx output is directed to syslog
ARG_SYSLOG=
ARG_CONFIG=

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 5

# Check arguments (configuration file name)
if [ -z $2 ]; then # empty string
	ARG_CONFIG=""
else
	ARG_CONFIG="-c \"$2\""
fi

#
# Function that checks event handlers. Prevents
# udev loading hang.
#
check_handlers()
{
	ls /dev/event* > /dev/null 2> /dev/null
	[ $? = 0 ] && return 0
	ls /dev/input/event* > /dev/null 2> /dev/null
	[ $? = 0 ] && return 0
	ls /dev/misc/event* > /dev/null 2> /dev/null
	[ $? = 0 ] && return 0

	echo "No input event handlers found. Start blocked."

	return 1
}

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	
	$DAEMON -b $ARG_SYSLOG $ARG_CONFIG
	return $?
}

#
# Function that stops the daemon/service
#
do_stop()
{
	$DAEMON -k
	return $?
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	
	return 0
}

case "$1" in
  start)
	echo "Starting $NAME :" "$DESC" >&2
	check_handlers
	[ $? -ne 0 ] && exit 1
	do_start
	RET=$?
	case "$RET" in
		0) 
			echo "btnx successfully started" 
			exit 0
			;;
		*) 
			echo "btnx failed to start (error code $RET)"
			exit $RET
			;;
	esac
	;;
  stop)
	echo "Stopping $NAME :" "$DESC" >&2
	do_stop
	case "$?" in
		0|1) 
			echo "btnx successfully stopped" 
			exit 0
			;;
		2) 
			echo "btnx failed to stop" 
			exit $FAIL_STATUS
			;;
	esac
	;;
  restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	echo "Restarting $NAME :" "$DESC" >&2
	do_stop
	case "$?" in
	  0|1)
		echo "btnx successfully stopped"
		do_start
		RET=$?
		case "$RET" in
			0) 
				echo "btnx successfully started"
				exit 0 ;;
			*) 
				echo "btnx failed to start during restart" 
				exit $RET ;;
		esac
		;;
	  *)
	  	# Failed to stop
		echo "btnx failed to stop during restart"
		exit $FAIL_STATUS ;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac

:

New ls -1l /etc/rc5.d/:

total 4
lrwxrwxrwx 1 root root  29 Nov 17  2018 K01apache-htcacheclean -> ../init.d/apache-htcacheclean
-rw-r--r-- 1 root root 677 Feb  5  2016 README
lrwxrwxrwx 1 root root  24 May  5  2018 S01binfmt-support -> ../init.d/binfmt-support
lrwxrwxrwx 1 root root  14 Jul 12 11:01 S01btnx -> ../init.d/btnx
lrwxrwxrwx 1 root root  19 May  5  2018 S01cgmanager -> ../init.d/cgmanager
lrwxrwxrwx 1 root root  22 May  5  2018 S01lvm2-lvmetad -> ../init.d/lvm2-lvmetad
lrwxrwxrwx 1 root root  23 May  5  2018 S01lvm2-lvmpolld -> ../init.d/lvm2-lvmpolld
lrwxrwxrwx 1 root root  20 Feb  9 18:50 S01mintsystem -> ../init.d/mintsystem
lrwxrwxrwx 1 root root  17 Dec 21  2018 S01mongodb -> ../init.d/mongodb
lrwxrwxrwx 1 root root  14 Jun 15  2018 S01nmbd -> ../init.d/nmbd
lrwxrwxrwx 1 root root  20 Nov 28  2018 S01php7.0-fpm -> ../init.d/php7.0-fpm
lrwxrwxrwx 1 root root  17 May  5  2018 S01rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root  21 Jun 15  2018 S01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root  13 Aug 14  2018 S01tlp -> ../init.d/tlp
lrwxrwxrwx 1 root root  15 May  5  2018 S01uuidd -> ../init.d/uuidd
lrwxrwxrwx 1 root root  17 Nov 17  2018 S02apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root  15 Nov 17  2018 S03acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root  17 Nov 17  2018 S03anacron -> ../init.d/anacron
lrwxrwxrwx 1 root root  17 Nov 17  2018 S03cgproxy -> ../init.d/cgproxy
lrwxrwxrwx 1 root root  14 Nov 17  2018 S03cron -> ../init.d/cron
lrwxrwxrwx 1 root root  14 Nov 17  2018 S03dbus -> ../init.d/dbus
lrwxrwxrwx 1 root root  16 Nov 17  2018 S03docker -> ../init.d/docker
lrwxrwxrwx 1 root root  17 Nov 17  2018 S03hddtemp -> ../init.d/hddtemp
lrwxrwxrwx 1 root root  20 Nov 17  2018 S03irqbalance -> ../init.d/irqbalance
lrwxrwxrwx 1 root root  20 Nov 17  2018 S03kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  21 Nov 17  2018 S03loadcpufreq -> ../init.d/loadcpufreq
lrwxrwxrwx 1 root root  13 Jun  2 06:16 S03ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root  15 Nov 17  2018 S03rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root  23 Nov 17  2018 S03smartmontools -> ../init.d/smartmontools
lrwxrwxrwx 1 root root  27 Nov 17  2018 S03speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx 1 root root  18 Nov 17  2018 S03thermald -> ../init.d/thermald
lrwxrwxrwx 1 root root  22 Nov 17  2018 S04avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root  19 Nov 17  2018 S04bluetooth -> ../init.d/bluetooth
lrwxrwxrwx 1 root root  22 Nov 17  2018 S04cpufrequtils -> ../init.d/cpufrequtils
lrwxrwxrwx 1 root root  17 Nov 17  2018 S05openvpn -> ../init.d/openvpn
lrwxrwxrwx 1 root root  14 Nov 17  2018 S06cups -> ../init.d/cups
lrwxrwxrwx 1 root root  22 Nov 17  2018 S06cups-browsed -> ../init.d/cups-browsed
lrwxrwxrwx 1 root root  15 Nov 17  2018 S06saned -> ../init.d/saned
lrwxrwxrwx 1 root root  14 Nov 17  2018 S07smbd -> ../init.d/smbd
lrwxrwxrwx 1 root root  21 Nov 17  2018 S08grub-common -> ../init.d/grub-common
lrwxrwxrwx 1 root root  18 Nov 17  2018 S08ondemand -> ../init.d/ondemand
lrwxrwxrwx 1 root root  18 Nov 17  2018 S08plymouth -> ../init.d/plymouth
lrwxrwxrwx 1 root root  18 Nov 17  2018 S08rc.local -> ../init.d/rc.local

@cdobrich
Copy link
Owner

On the machine where you expect btnx to startup automatically, open a console and share the output of this command:

runlevel

@LukasAV
Copy link
Author

LukasAV commented Jul 12, 2019

Outputs N 5

@cdobrich
Copy link
Owner

This is unusual. If your Ubuntu system is using standard System-V, we've confirmed it is loading into runlevel-5. We've confirmed the symbolic link to the btnx startup file is loaded in /etc/rc5.d/. (File named S01btnx -> ../init.d/btnx) and startup script looks okay.

Can you show me the contents of /etc/udev/rules.d/99-btnx.rules?

Also, did you remove the old instance of btnx from the Launchpad deb file from your system? I'm not sure if it will erase commonly shared files with the version you just built and installed from the recent repos.

@LukasAV
Copy link
Author

LukasAV commented Jul 12, 2019

I ran sudo apt-get purge btnx btnx-config before building, assuming it would remove installed by the .deb. Is there anything else to do?
Output of /etc/udev/rules.d/99-btnx.rules:

BUS=="usb", SYSFS{idVendor}=="056e", SYSFS{idProduct}=="0136", ACTION=="add", RUN+="/etc/init.d/btnx start" 
BUS=="usb", SYSFS{idVendor}=="056e", SYSFS{idProduct}=="0136", ACTION=="remove", RUN+="/etc/init.d/btnx stop

@cdobrich
Copy link
Owner

You ran the correct removal procedure, so you should be fine.

Hmm, I don't know if that btnx.rules file matters BUT your file is different from mine. This is mine:

BUS=="usb", SYSFS{idVendor}=="046d", SYSFS{idProduct}=="101a", ACTION=="add", RUN+="/etc/init.d/btnx start"
BUS=="usb", SYSFS{idVendor}=="046d", SYSFS{idProduct}=="101a", ACTION=="remove", RUN+="/etc/init.d/btnx stop"

The log snippet you shared earlier referenced and error on these two lines. I'm not sure what. I'm going to investigate.

What brand of mouse are you using?

@LukasAV
Copy link
Author

LukasAV commented Jul 12, 2019

Changing the udev rules did not help.
I am using an ELECOM Bluetooth 4.0 LE mouse.
Is it a problem the Bluetooth mouse connects after login and is not available before?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants