diff --git a/wled00/data/settings_sync.htm b/wled00/data/settings_sync.htm
index 16bd3f7f6..8e142dc9b 100644
--- a/wled00/data/settings_sync.htm
+++ b/wled00/data/settings_sync.htm
@@ -156,6 +156,7 @@ Realtime LED offset:
DMX TX:
DMX Enable:
+ DMX Port:
This firmware build does not include DMX Input support.
diff --git a/wled00/set.cpp b/wled00/set.cpp
index 9a12cdc21..08a0180ad 100644
--- a/wled00/set.cpp
+++ b/wled00/set.cpp
@@ -423,7 +423,9 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
#ifdef WLED_ENABLE_DMX_INPUT
dmxInputTransmitPin = request->arg(F("IDMT")).toInt();
dmxInputReceivePin = request->arg(F("IDMR")).toInt();
- dmxInputEnablePin= request->arg(F("IDME")).toInt();
+ dmxInputEnablePin = request->arg(F("IDME")).toInt();
+ dmxInputPort = request->arg(F("IDMP")).toInt();
+ if(dmxInputPort <= 0 || dmxInputPort > 2) dmxInputPort = 2;
#endif
#ifndef WLED_DISABLE_ALEXA
diff --git a/wled00/wled.cpp b/wled00/wled.cpp
index 8b2b33762..341036abf 100644
--- a/wled00/wled.cpp
+++ b/wled00/wled.cpp
@@ -541,8 +541,7 @@ void WLED::setup()
initDMX();
#endif
#ifdef WLED_ENABLE_DMX_INPUT
- const uint8_t dmxInputPortNumber = 2; //TODO turn into config variable?!
- dmxInput.init(dmxInputReceivePin, dmxInputTransmitPin, dmxInputEnablePin, dmxInputPortNumber);
+ dmxInput.init(dmxInputReceivePin, dmxInputTransmitPin, dmxInputEnablePin, dmxInputPort);
#endif
#ifdef WLED_ENABLE_ADALIGHT
diff --git a/wled00/wled.h b/wled00/wled.h
index b366e82a1..b7f1ae710 100644
--- a/wled00/wled.h
+++ b/wled00/wled.h
@@ -467,6 +467,7 @@ WLED_GLOBAL bool arlsForceMaxBri _INIT(false); // enable to f
WLED_GLOBAL int dmxInputTransmitPin _INIT(0);
WLED_GLOBAL int dmxInputReceivePin _INIT(0);
WLED_GLOBAL int dmxInputEnablePin _INIT(0);
+ WLED_GLOBAL int dmxInputPort _INIT(2);
WLED_GLOBAL DMXInput dmxInput;
#endif
diff --git a/wled00/xml.cpp b/wled00/xml.cpp
index 5caa7159c..aa49de022 100644
--- a/wled00/xml.cpp
+++ b/wled00/xml.cpp
@@ -446,6 +446,7 @@ void getSettingsJS(byte subPage, Print& settingsScript)
sappend('v',SET_F("IDMT"),dmxInputTransmitPin);
sappend('v',SET_F("IDMR"),dmxInputReceivePin);
sappend('v',SET_F("IDME"),dmxInputEnablePin);
+ sappend('v',SET_F("IDMP"),dmxInputPort);
#endif
printSetFormValue(settingsScript,PSTR("DA"),DMXAddress);
printSetFormValue(settingsScript,PSTR("XX"),DMXSegmentSpacing);