In the case of our products, we lack a physical RFKILL switch and do not have the rfkill module enabled in the kernel which resulted in an error message each time bluetoothd was started. This commit looks at the errno code after failing to open the RFKILL device and only logs an error if it is something other than ENOENT (No such file or directory). Fixes: https://github.com/bluez/bluez/issues/792 --- src/rfkill.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/rfkill.c b/src/rfkill.c index 88cad1c9e..ac4a48d0a 100644 --- a/src/rfkill.c +++ b/src/rfkill.c @@ -55,6 +55,7 @@ struct rfkill_event { uint8_t hard; }; #define RFKILL_EVENT_SIZE_V1 8 +#define RFKILL_DEVICE_PATH "/dev/rfkill" static int get_adapter_id_for_rfkill(uint32_t rfkill_id) { @@ -88,7 +89,7 @@ int rfkill_get_blocked(uint16_t index) int fd; int blocked = -1; - fd = open("/dev/rfkill", O_RDWR); + fd = open(RFKILL_DEVICE_PATH, O_RDWR); if (fd < 0) { DBG("Failed to open RFKILL control device"); return -1; @@ -178,9 +179,16 @@ void rfkill_init(void) int fd; GIOChannel *channel; - fd = open("/dev/rfkill", O_RDWR); + errno = 0; + fd = open(RFKILL_DEVICE_PATH, O_RDWR); if (fd < 0) { - error("Failed to open RFKILL control device"); + if (errno == ENOENT) { + DBG("No RFKILL device available at '%s'", + RFKILL_DEVICE_PATH); + } else { + error("Failed to open RFKILL control device: %s", + strerror(errno)); + } return; } -- 2.39.2