diff --git a/vehicle/OVMS.V3/components/esp32can/src/esp32can.cpp b/vehicle/OVMS.V3/components/esp32can/src/esp32can.cpp
index b27101e0..c17eddbd 100644
--- a/vehicle/OVMS.V3/components/esp32can/src/esp32can.cpp
+++ b/vehicle/OVMS.V3/components/esp32can/src/esp32can.cpp
@@ -418,6 +418,14 @@ esp_err_t esp32can::InitController()
       MODULE_ESP32CAN->BTR1.B.TSEG1=0x4;
       __tq = 0.125;
       break;
+
+    case CAN_SPEED_500KBPS:
+      MODULE_ESP32CAN->BTR0.B.SJW = 2; // .sjw=3
+      MODULE_ESP32CAN->BTR1.B.TSEG1 = 14; // .tseg_1=15
+      MODULE_ESP32CAN->BTR1.B.TSEG2 = 3; // .tseg_2=4
+      __tq = 0.100; // .brp=8
+      break;
+
     default:
       MODULE_ESP32CAN->BTR1.B.TSEG1=0xc;
       __tq = ((float)1000/static_cast<int>(MyESP32can->m_speed)) / 16;
@@ -441,8 +449,8 @@ esp_err_t esp32can::InitController()
 
   /* Set sampling
    * 1 -> triple; the bus is sampled three times; recommended for low/medium speed buses     (class A and B) where filtering spikes on the bus line is beneficial
-   * 0 -> single; the bus is sampled once; recommended for high speed buses (SAE class C)*/
-  MODULE_ESP32CAN->BTR1.B.SAM=0x1;
+   * 0 -> single; the bus is sampled once; recommended for high speed buses (SAE class C = 125 kbps or higher)*/
+  MODULE_ESP32CAN->BTR1.B.SAM = (MyESP32can->m_speed < CAN_SPEED_125KBPS) ? 1 : 0;
 
   // Enable all interrupts except arbitration loss (can be ignored):
   uint32_t ier = 0xff & ~__CAN_IRQ_ARB_LOST;
diff --git a/vehicle/OVMS.V3/components/mcp2515/src/mcp2515.cpp b/vehicle/OVMS.V3/components/mcp2515/src/mcp2515.cpp
index 126a6223..f5919453 100644
--- a/vehicle/OVMS.V3/components/mcp2515/src/mcp2515.cpp
+++ b/vehicle/OVMS.V3/components/mcp2515/src/mcp2515.cpp
@@ -217,7 +217,12 @@ esp_err_t mcp2515::Start(CAN_mode_t mode, CAN_speed_t speed)
       cnf1=0x41; cnf2=0xf1; cnf3=0x85;
       break;
     case CAN_SPEED_500KBPS:
-      cnf1=0x00; cnf2=0xf0; cnf3=0x86;
+      // OVMS/unknown source:
+      // BRP=0, PRSEG=1, PS1=7, PS2=7, SJW=1, BTLMODE=1, SAM=1, SOF=1, WAKFIL=0 → Sample point at 9/16 = 56.3%
+      //cnf1=0x00; cnf2=0xf0; cnf3=0x86;
+      // SAE J2284-3:
+      // BRP=0, PRSEG=4, PS1=8, PS2=3, SJW=3, BTLMODE=1, SAM=0, SOF=1, WAKFIL=0 → Sample point at 13/16 = 81,25%
+      cnf1=0x80; cnf2=0xbb; cnf3=0x82;
       break;
     case CAN_SPEED_1000KBPS:
       cnf1=0x00; cnf2=0xca; cnf3=0x81;
