diff --git a/src/drivers/irlock/irlock.cpp b/src/drivers/irlock/irlock.cpp
index 8d4c5cfb87c6058e59bfe96a64f898101336aaa1..f6eeb5d0545d6bd5ec16b9d0a8c6d12f6c72fd15 100644
--- a/src/drivers/irlock/irlock.cpp
+++ b/src/drivers/irlock/irlock.cpp
@@ -54,6 +54,8 @@
 #include <drivers/drv_irlock.h>
 #include <drivers/drv_hrt.h>
 
+#include <px4_getopt.h>
+
 #include <nuttx/clock.h>
 #include <nuttx/wqueue.h>
 #include <systemlib/err.h>
@@ -449,17 +451,28 @@ int irlock_main(int argc, char *argv[])
 {
 	int i2cdevice = IRLOCK_I2C_BUS;
 
-	/** jump over start/off/etc and look at options first **/
-	if (getopt(argc, argv, "b:") != EOF) {
-		i2cdevice = (int)strtol(optarg, NULL, 0);
+	int ch;
+	int myoptind = 1;
+	const char *myoptarg = nullptr;
+
+	while ((ch = px4_getopt(argc, argv, "b:", &myoptind, &myoptarg)) != EOF) {
+		switch (ch) {
+		case 'b':
+			i2cdevice = (uint8_t)atoi(myoptarg);
+			break;
+
+		default:
+			PX4_WARN("Unknown option!");
+			return -1;
+		}
 	}
 
-	if (optind >= argc) {
+	if (myoptind >= argc) {
 		irlock_usage();
 		exit(1);
 	}
 
-	const char *command = argv[optind];
+	const char *command = argv[myoptind];
 
 	/** start driver **/
 	if (!strcmp(command, "start")) {