diff --git a/Makefile b/Makefile
index 95aeae6..dde09a5 100644
--- a/Makefile
+++ b/Makefile
@@ -796,9 +796,13 @@
 ifeq ($(TARGET_OS), Linux)
 LIB_OBJS += custom_baud_linux.o
 else
+ifeq ($(TARGET_OS), Darwin)
+LIB_OBJS += custom_baud_darwin.o
+else
 LIB_OBJS += custom_baud.o
 endif
 endif
+endif
 
 USE_SOCKETS := $(if $(call filter_deps,$(DEPENDS_ON_SOCKETS)),yes,no)
 ifeq ($(USE_SOCKETS), yes)
diff --git a/custom_baud_darwin.c b/custom_baud_darwin.c
new file mode 100644
index 0000000..e8764dd
--- /dev/null
+++ b/custom_baud_darwin.c
@@ -0,0 +1,61 @@
+/*
+ * This file is part of the flashrom project.
+ *
+ * Copyright (C) 2022 Peter Stuge <peter@stuge.se>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <termios.h>
+#include <sys/ioctl.h>
+#include <IOKit/serial/ioss.h>
+#include <errno.h>
+
+#include "custom_baud.h"
+
+int use_custom_baud(unsigned int baud, const struct baudentry *baudtable)
+{
+	int i;
+
+	if (baud > 230400)
+		return 1;
+
+	for (i = 0; baudtable[i].baud; i++) {
+		if (baudtable[i].baud == baud)
+			return 0;
+
+		if (baudtable[i].baud > baud)
+			return 1;
+	}
+
+	return 1;
+}
+
+int set_custom_baudrate(int fd, unsigned int baud, const enum custom_baud_stage stage, void *tio_wanted)
+{
+	struct termios *wanted;
+	speed_t speed;
+
+	switch (stage) {
+	case BEFORE_FLAGS:
+		break;
+
+	case WITH_FLAGS:
+		wanted = tio_wanted;
+		return cfsetspeed(wanted, B19200);
+
+	case AFTER_FLAGS:
+		speed = baud;
+		return ioctl(fd, IOSSIOSPEED, &speed);
+	}
+
+	return 0;
+}
diff --git a/meson.build b/meson.build
index 7a91300..fa08c93 100644
--- a/meson.build
+++ b/meson.build
@@ -100,6 +100,8 @@
 
 if host_machine.system() == 'linux'
   custom_baud_c = 'custom_baud_linux.c'
+elif host_machine.system() == 'darwin'
+  custom_baud_c = 'custom_baud_darwin.c'
 else
   custom_baud_c = 'custom_baud.c'
 endif
diff --git a/serial.c b/serial.c
index cfc9b1e..d3a7e93 100644
--- a/serial.c
+++ b/serial.c
@@ -47,6 +47,10 @@
  * On Linux there is a non-standard way to use arbitrary baud rates that we use if there is no
  * matching standard rate, see custom_baud.c
  *
+ * On Darwin there is also a non-standard ioctl() to set arbitrary baud rates
+ * and any above 230400, see custom_baud_darwin.c and
+ * https://opensource.apple.com/source/IOSerialFamily/IOSerialFamily-91/tests/IOSerialTestLib.c.auto.html
+ *
  * On Windows there exist similar macros (starting with CBR_ instead of B) but they are only defined for
  * backwards compatibility and the API supports arbitrary baud rates in the same manner as the macros, see
  * http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx
