 
 static int do_id(int argc, char *argv[])
 {
-    uint8_t node_id = id_read();
-    if (argc >= 2) {
-        node_id = atoi(argv[1]);
-        id_write(node_id);
-        radio_init(node_id);
+    uint8_t node = id_read();
+    if (argc == 2) {
+        node = atoi(argv[1]);
+        if (!node_valid(node)) {
+            return ERR_PARAM;
+        }
+        id_write(node);
+        radio_init(node);
+        node_id = node;
     }
     print("00 %02X\n", node_id);
     return 0;

                print("%02X\n", res);
            }
        }
    }

    // radio processing

        return ERR_PARAM;
    }
    uint8_t node = atoi(argv[1]);
    if (!node_valid(node)) {
        return ERR_PARAM;
    }
    buffer_t *buf = &buffers[node];
    if (buf->len == 0) {
        // nothing to read
