diff --git a/Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino b/Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino
new file mode 100644
index 0000000000000000000000000000000000000000..6f5f23dce6894bb0a8637ac505dd16ae12c7bb9e
--- /dev/null
+++ b/Code/ESP32_Cam/WifiCam_fixIP/WifiCam_fixIP.ino
@@ -0,0 +1,172 @@
+#include <WebServer.h>
+#include <WiFi.h>
+#include <esp32cam.h>
+
+
+// const char* WIFI_SSID = "lemur";
+// const char* WIFI_PASS = "lemur9473";
+
+// const char* WIFI_SSID = "uclahci";
+// const char* WIFI_PASS = "94739473";
+
+const char* WIFI_SSID = "NETGEAR33";
+const char* WIFI_PASS = "freestreet163";
+
+// const char* WIFI_SSID = "LEMUR_ESP32_EYE_AP_1";
+// const char* WIFI_PASS = "123456789";
+
+WebServer server(80);
+
+static auto loRes = esp32cam::Resolution::find(320, 240);
+static auto hiRes = esp32cam::Resolution::find(800, 600);
+
+void
+handleBmp()
+{
+  if (!esp32cam::Camera.changeResolution(loRes)) {
+    Serial.println("SET-LO-RES FAIL");
+  }
+
+  auto frame = esp32cam::capture();
+  if (frame == nullptr) {
+    Serial.println("CAPTURE FAIL");
+    server.send(503, "", "");
+    return;
+  }
+  Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame->getHeight(),
+                static_cast<int>(frame->size()));
+
+  if (!frame->toBmp()) {
+    Serial.println("CONVERT FAIL");
+    server.send(503, "", "");
+    return;
+  }
+  Serial.printf("CONVERT OK %dx%d %db\n", frame->getWidth(), frame->getHeight(),
+                static_cast<int>(frame->size()));
+
+  server.setContentLength(frame->size());
+  server.send(200, "image/bmp");
+  WiFiClient client = server.client();
+  frame->writeTo(client);
+}
+
+void
+serveJpg()
+{
+  auto frame = esp32cam::capture();
+  if (frame == nullptr) {
+    Serial.println("CAPTURE FAIL");
+    server.send(503, "", "");
+    return;
+  }
+  Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame->getHeight(),
+                static_cast<int>(frame->size()));
+
+  server.setContentLength(frame->size());
+  server.send(200, "image/jpeg");
+  WiFiClient client = server.client();
+  frame->writeTo(client);
+}
+
+void
+handleJpgLo()
+{
+  if (!esp32cam::Camera.changeResolution(loRes)) {
+    Serial.println("SET-LO-RES FAIL");
+  }
+  serveJpg();
+}
+
+void
+handleJpgHi()
+{
+  if (!esp32cam::Camera.changeResolution(hiRes)) {
+    Serial.println("SET-HI-RES FAIL");
+  }
+  serveJpg();
+}
+
+void
+handleJpg()
+{
+  server.sendHeader("Location", "/cam-hi.jpg");
+  server.send(302, "", "");
+}
+
+void
+handleMjpeg()
+{
+  if (!esp32cam::Camera.changeResolution(hiRes)) {
+    Serial.println("SET-HI-RES FAIL");
+  }
+
+  Serial.println("STREAM BEGIN");
+  WiFiClient client = server.client();
+  auto startTime = millis();
+  int res = esp32cam::Camera.streamMjpeg(client);
+  if (res <= 0) {
+    Serial.printf("STREAM ERROR %d\n", res);
+    return;
+  }
+  auto duration = millis() - startTime;
+  Serial.printf("STREAM END %dfrm %0.2ffps\n", res, 1000.0 * res / duration);
+}
+
+void
+setup()
+{
+  Serial.begin(115200);
+  Serial.println();
+
+  // We set a Static IP address
+  IPAddress local_IP(192, 168, 0, 114);
+  // We set a Gateway IP address
+  IPAddress gateway(192, 168, 0, 1);
+  IPAddress subnet(255, 255, 255, 0);
+
+  {
+    using namespace esp32cam;
+    Config cfg;
+    cfg.setPins(pins::AiThinker);
+    cfg.setResolution(hiRes);
+    cfg.setBufferCount(2);
+    cfg.setJpeg(80);
+
+    bool ok = Camera.begin(cfg);
+    Serial.println(ok ? "CAMERA OK" : "CAMERA FAIL");
+  }
+
+  WiFi.persistent(false);
+  WiFi.mode(WIFI_STA);
+  
+  WiFi.begin(WIFI_SSID, WIFI_PASS);
+
+  if(!WiFi.config(local_IP, gateway, subnet)) {
+    Serial.println("STA Failed to configure");
+  }
+
+  while (WiFi.status() != WL_CONNECTED) {
+    delay(500);
+  }
+
+  Serial.print("http://");
+  Serial.println(WiFi.localIP());
+  // Serial.println("  /cam.bmp");
+  Serial.println("  /cam-lo.jpg");
+  Serial.println("  /cam-hi.jpg");
+  // Serial.println("  /cam.mjpeg");
+
+  // server.on("/cam.bmp", handleBmp);
+  server.on("/cam-lo.jpg", handleJpgLo);
+  server.on("/cam-hi.jpg", handleJpgHi);
+  // server.on("/cam.jpg", handleJpg);
+  // server.on("/cam.mjpeg", handleMjpeg);
+
+  server.begin();
+}
+
+void
+loop()
+{
+  server.handleClient();
+}