I have looked into this and I am unsure I can test this any further without having a monome myself. Try adding this printf statement so we know what path it's trying to open:
diff --git a/src/serialosc-device/config.c b/src/serialosc-device/config.c
index b6fda47..d3a05fd 100644
--- a/src/serialosc-device/config.c
+++ b/src/serialosc-device/config.c
@@ -135,6 +135,7 @@ sosc_config_write(const char *config_dir, const char *serial, sosc_state_t *stat
path = path_for_serial(sosc_get_default_config_dir(), serial);
}
+ printf("FOPEN PATH %s\n", path);
if (!(f = fopen(path, "w"))) {
s_free(path);
return 1;
Rebuild, restart, replug