Skip to content

Commit c794bdf

Browse files
committed
Fix I2C permission issue on Fedora (#254)
- Change udev rules path from /usr/lib/udev to /etc/udev for proper precedence - Add KERNEL match to i2c-dev udev rule for better device detection - Enhance error handling in numberpad.py for permission errors - Ensure consistent INSTALL_UDEV_DIR_PATH across all scripts - Add directory creation for robustness in install scripts
1 parent 40bfc9c commit c794bdf

8 files changed

+27
-9
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"folders": [
3+
{
4+
"path": "."
5+
}
6+
],
7+
"settings": {}
8+
}

install_external_keyboard_toggle.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if [ -z "$CONFIG_FILE_NAME" ]; then
1313
CONFIG_FILE_NAME="numberpad_dev"
1414
fi
1515
if [ -z "$INSTALL_UDEV_DIR_PATH" ]; then
16-
INSTALL_UDEV_DIR_PATH="/usr/lib/udev"
16+
INSTALL_UDEV_DIR_PATH="/etc/udev"
1717
fi
1818

1919
CONFIG_FILE_PATH="$CONFIG_FILE_DIR_PATH/$CONFIG_FILE_NAME"
@@ -38,6 +38,8 @@ case "$RESPONSE" in [yY][eE][sS]|[yY])
3838

3939
echo
4040

41+
sudo mkdir -p $INSTALL_UDEV_DIR_PATH/rules.d
42+
4143
cat "udev/90-numberpad-external-keyboard.rules" | INSTALL_DIR_PATH=$INSTALL_DIR_PATH envsubst '$INSTALL_DIR_PATH' | sudo tee "$INSTALL_UDEV_DIR_PATH/rules.d/90-numberpad-external-keyboard.rules" >/dev/null
4244

4345
if [[ $? != 0 ]]; then

install_power_supply_saver.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if [ -z "$CONFIG_FILE_NAME" ]; then
1313
CONFIG_FILE_NAME="numberpad_dev"
1414
fi
1515
if [ -z "$INSTALL_UDEV_DIR_PATH" ]; then
16-
INSTALL_UDEV_DIR_PATH="/usr/lib/udev"
16+
INSTALL_UDEV_DIR_PATH="/etc/udev"
1717
fi
1818

1919
CONFIG_FILE_PATH="$CONFIG_FILE_DIR_PATH/$CONFIG_FILE_NAME"
@@ -32,6 +32,8 @@ case "$RESPONSE" in [yY][eE][sS]|[yY])
3232

3333
echo
3434

35+
sudo mkdir -p $INSTALL_UDEV_DIR_PATH/rules.d
36+
3537
cat "udev/80-numberpad-power-supply.rules" | INSTALL_DIR_PATH=$INSTALL_DIR_PATH envsubst '$INSTALL_DIR_PATH' | sudo tee "$INSTALL_UDEV_DIR_PATH/rules.d/80-numberpad-power-supply.rules" >/dev/null
3638

3739
if [[ $? != 0 ]]; then

install_user_groups.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ source non_sudo_check.sh
44

55
# ENV VARS
66
if [ -z "$INSTALL_UDEV_DIR_PATH" ]; then
7-
INSTALL_UDEV_DIR_PATH="/usr/lib/udev"
7+
INSTALL_UDEV_DIR_PATH="/etc/udev"
88
fi
99

1010
sudo groupadd "input"
@@ -42,10 +42,11 @@ fi
4242

4343
# https://github.com/asus-linux-drivers/asus-numberpad-driver/issues/231
4444
sudo mkdir -p /etc/modules-load.d
45+
sudo mkdir -p $INSTALL_UDEV_DIR_PATH/rules.d
4546

4647
echo 'KERNEL=="uinput", GROUP="uinput", MODE="0660"' | sudo tee $INSTALL_UDEV_DIR_PATH/rules.d/99-asus-numberpad-driver-uinput.rules >/dev/null
4748
echo 'uinput' | sudo tee /etc/modules-load.d/uinput-asus-numberpad-driver.conf >/dev/null
48-
echo 'SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"' | sudo tee $INSTALL_UDEV_DIR_PATH/rules.d/99-asus-numberpad-driver-i2c-dev.rules >/dev/null
49+
echo 'SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660"' | sudo tee $INSTALL_UDEV_DIR_PATH/rules.d/99-asus-numberpad-driver-i2c-dev.rules >/dev/null
4950
echo "i2c-dev" | sudo tee /etc/modules-load.d/i2c-dev-asus-numberpad-driver.conf >/dev/null
5051

5152
if [[ $? != 0 ]]; then

numberpad.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,8 @@ def send_value_to_touchpad_via_i2c(value):
736736
data = [0x05, 0x00, 0x3d, 0x03, 0x06, 0x00, 0x07, 0x00, 0x0d, 0x14, 0x03, int(value, 16), 0xad]
737737
msg = i2c_msg.write(device_addr, data)
738738
bus.i2c_rdwr(msg)
739+
except PermissionError:
740+
log.error('Permission denied during I2C communication. Please ensure you are in the "i2c" group.')
739741
except Exception as e:
740742
log.error('Error during sending via i2c: \"%s\"', e)
741743

@@ -1067,8 +1069,11 @@ def get_compose_key_start_events_for_unicode_string(reset_udev = True):
10671069
bus = SMBus()
10681070
bus.open(int(device_id))
10691071
bus.close()
1070-
except:
1071-
log.error("Can't open the I2C bus connection (id: %s)", device_id)
1072+
except PermissionError:
1073+
log.error("Permission denied when opening I2C bus (id: %s). Please ensure you are in the 'i2c' group and that udev rules are applied. Try logging out and back in, or reboot.", device_id)
1074+
sys.exit(1)
1075+
except Exception as e:
1076+
log.error("Can't open the I2C bus connection (id: %s): %s", device_id, e)
10721077
sys.exit(1)
10731078

10741079

uninstall.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ shopt -s extglob
2525
INSTALL_DIR_PATH="/usr/share/asus-numberpad-driver"
2626
fi
2727
if [ -z "$INSTALL_UDEV_DIR_PATH" ]; then
28-
INSTALL_UDEV_DIR_PATH="/usr/lib/udev/"
28+
INSTALL_UDEV_DIR_PATH="/etc/udev"
2929
fi
3030
if [ -z "$CONFIG_FILE_DIR_PATH" ]; then
3131
CONFIG_FILE_DIR_PATH="$INSTALL_DIR_PATH"

uninstall_external_keyboard_toggle.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ if [ -z "$INSTALL_DIR_PATH" ]; then
77
INSTALL_DIR_PATH="/usr/share/asus-numberpad-driver"
88
fi
99
if [ -z "$INSTALL_UDEV_DIR_PATH" ]; then
10-
INSTALL_UDEV_DIR_PATH="/usr/lib/udev"
10+
INSTALL_UDEV_DIR_PATH="/etc/udev"
1111
fi
1212

1313
sudo rm -f "$INSTALL_DIR_PATH/udev/external_keyboard_is_connected.sh"

uninstall_power_supply_saver.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ if [ -z "$INSTALL_DIR_PATH" ]; then
77
INSTALL_DIR_PATH="/usr/share/asus-numberpad-driver"
88
fi
99
if [ -z "$INSTALL_UDEV_DIR_PATH" ]; then
10-
INSTALL_UDEV_DIR_PATH="/usr/lib/udev"
10+
INSTALL_UDEV_DIR_PATH="/etc/udev"
1111
fi
1212

1313
sudo rm -f "$INSTALL_DIR_PATH/udev/power_supply_is_ac.sh"

0 commit comments

Comments
 (0)