Проблемы с wiegand

Попробую воспроизвести.
Дайте пожалуйста архив с диагностической информацией контроллера. Создание архива описано в документации.
Ну и артефакты (модуль собранный) - чтобы именно на вашем проверил.

приложен диагностический архив, доступен только сотрудникам поддержки
(308,7 КБ)

wiegand-gpio.ko (10,8 КБ)

wiegand-monitor (2,0 КБ)

Отлично, после обеда попробую.

Ядро то же:

uname -a
Linux wirenboard-AC4U5OVN 6.8.0-wb140

Копирую файл в /lib/modules/6.8.0-wb140/kernel
Выполняю

depmod -a

Проверяю. Остановил wb-mqtt-gpio, выполняю

chmod a+x wiegand-monitor
./wiegand-monitor 
Loading wiegand-gpio module...
00000 Data: 0000000000000000000000000000000000000000000000000000000000000000

Вижу:

root@wirenboard-AC4U5OVN:~# cat /sys/kernel/debug/gpio |grep A2
 gpio-119 (A2 OUT              )
 gpio-228 (A2 IN               |wiegand-d1          ) in  hi IRQ 
 gpio-513 (EC A2               )
root@wirenboard-AC4U5OVN:~# cat /sys/kernel/debug/gpio |grep A1
 gpio-133 (A1 OUT              )
 gpio-233 (A1 IN               |wiegand-d0          ) in  hi IRQ 
 gpio-512 (EC A1               )

Ну и


Попробую сделать эмулятор wiegand из ардуинки.

Да, у меня всё ровно также выглядит. Проблема только, что при считывании карты, её значение не публикуется в топик. Оно даже отсутствует в /sys/kernel/wiegand/read

Сейчас пересобираю с отладкой, смотрю. Предполагаю что дело в версии ядра.

Так, персобрал заодно модуль. Попробовал эмулятор на ардуинке.
Вот такой код:

/*
 * Wiegand 26-bit Emulator for WB8 testing
 *
 * Wiring:
 *   Arduino A1  →  WB8 A1 IN (Wiegand D0, gpio-233)
 *   Arduino A2  →  WB8 A2 IN (Wiegand D1, gpio-228)
 *   Arduino GND →  WB8 GND
 *
 * Protocol:
 *   Both lines are normally HIGH (open-drain, active LOW)
 *   D0 pulse = bit 0, D1 pulse = bit 1
 *   Pulse width ~50µs, inter-bit gap ~2ms
 *
 * 26-bit Wiegand frame:
 *   [EP][FC7..FC0][CN15..CN0][OP]
 *   EP  = even parity over bits 1-13
 *   FC  = 8-bit facility code
 *   CN  = 16-bit card number
 *   OP  = odd parity over bits 12-24
 */

#define PIN_D0   A1
#define PIN_D1   A2
#define PIN_LED  LED_BUILTIN  // pin 13, встроенный светодиод

#define PULSE_US   50    // pulse width, microseconds
#define BIT_GAP_MS  2    // gap between bits, milliseconds
#define SEND_INTERVAL_MS 2000  // send card every 2 seconds

// Test card: facility=0x12 (18), card=0x3456 (13398)
#define FACILITY_CODE  0x12
#define CARD_NUMBER    0x3456

void setup() {
  Serial.begin(9600);
  pinMode(PIN_D0, OUTPUT);
  pinMode(PIN_D1, OUTPUT);
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_D0, HIGH);
  digitalWrite(PIN_D1, HIGH);
  digitalWrite(PIN_LED, LOW);
  // Мигнём 3 раза при старте
  for (int i = 0; i < 3; i++) {
    digitalWrite(PIN_LED, HIGH); delay(100);
    digitalWrite(PIN_LED, LOW);  delay(100);
  }
  Serial.println("Wiegand emulator ready.");
  Serial.print("Will send: facility=0x");
  Serial.print(FACILITY_CODE, HEX);
  Serial.print(" card=0x");
  Serial.println(CARD_NUMBER, HEX);
}

// Count number of set bits (for parity)
int countBits(uint32_t val, int nbits) {
  int count = 0;
  for (int i = 0; i < nbits; i++) {
    if (val & (1UL << i)) count++;
  }
  return count;
}

void sendPulse(int pin) {
  digitalWrite(pin, LOW);
  delayMicroseconds(PULSE_US);
  digitalWrite(pin, HIGH);
}

void sendWiegand26(uint8_t facility, uint16_t card) {
  // Build 24-bit data (without parity): [FC7..FC0][CN15..CN0]
  uint32_t data = ((uint32_t)facility << 16) | card;

  // Even parity: over upper 12 bits (FC + CN[15..8])
  int ep = countBits((data >> 12) & 0xFFF, 12) % 2;  // 0 = even, 1 = odd → send !ep
  ep = ep ? 0 : 0;  // even parity bit = 0 if count is even, 1 if odd
  int epBit = (countBits((data >> 12) & 0xFFF, 12) % 2 == 0) ? 0 : 1;

  // Odd parity: over lower 12 bits (CN[7..0] + ...)
  int opBit = (countBits(data & 0xFFF, 12) % 2 == 0) ? 1 : 0;

  // Build 26-bit frame
  uint32_t frame = ((uint32_t)epBit << 25) | (data << 1) | opBit;

  Serial.print("Sending 26-bit frame: 0x");
  Serial.print(frame, HEX);
  Serial.print(" (facility=");
  Serial.print(facility, DEC);
  Serial.print(" card=");
  Serial.print(card, DEC);
  Serial.println(")");

  digitalWrite(PIN_LED, HIGH);  // LED on — идёт передача

  // Send bits MSB first
  for (int i = 25; i >= 0; i--) {
    if (frame & (1UL << i)) {
      sendPulse(PIN_D1);  // bit 1
    } else {
      sendPulse(PIN_D0);  // bit 0
    }
    delay(BIT_GAP_MS);
  }

  digitalWrite(PIN_LED, LOW);   // LED off — передача завершена
}

void loop() {
  sendWiegand26(FACILITY_CODE, CARD_NUMBER);
  delay(SEND_INTERVAL_MS);
}

Ничего не вижу.

Выгрузил модуль, запустил опять wb-mqtt-gpio.
Начал пробовать (разные) по длительности импульсы на вход A1
В процессе даже пайплайн построил, ардуинка подключена к контроллеру по usb, заливаю на нее прошивку так:

scp  /tmp/gpio-pulse-test-build/gpio-pulse-test.ino.hex root@10.0.0.85:/tmp/gpio-pulse-test.hex && \
ssh  root@10.0.0.85  "avrdude -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/gpio-pulse-test.hex:i 2>&1 | tail -4"

Но это, по сути, неважно.
Так как грань удачной детекции получается вот с такими параметрами:

/*
 * GPIO Pulse Test
 *
 * Тест минимально воспринимаемой длительности сигнала входом WB8.
 * A1 Arduino → A1 IN WB8 (gpio-233)
 *
 * Выход A1 и встроенный светодиод меняются синхронно:
 *   50 мкс LOW  (активный сигнал — светодиод горит)
 *   2 мс   HIGH (пауза          — светодиод гаснет)
 */

#define PIN_OUT  A1
#define PIN_LED  LED_BUILTIN

#define PULSE_LOW_US   200   // длительность LOW, микросекунды
#define PAUSE_HIGH_MS  10    // длительность HIGH, миллисекунды

void setup() {
  Serial.begin(9600);
  pinMode(PIN_OUT, OUTPUT);
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_OUT, HIGH);
  digitalWrite(PIN_LED, LOW);
  Serial.println("GPIO pulse test ready.");
  Serial.print("LOW: ");
  Serial.print(PULSE_LOW_US);
  Serial.print(" us  HIGH: ");
  Serial.print(PAUSE_HIGH_MS);
  Serial.println(" ms");
}

void loop() {
  // Активный импульс: LOW + LED ON
  digitalWrite(PIN_OUT, LOW);
  digitalWrite(PIN_LED, HIGH);
  delayMicroseconds(PULSE_LOW_US);

  // Пауза: HIGH + LED OFF
  digitalWrite(PIN_OUT, HIGH);
  digitalWrite(PIN_LED, LOW);
  delay(PAUSE_HIGH_MS);
}

импульс (низкое состояние) не меньше 200мкс
При этом он детектится нечасто, раз в несколько секунд:

Mar 11 13:35:25 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:28 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:28 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:28 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:28 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:30 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:30 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:33 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:33 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:35 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:36 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:37 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:37 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:38 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:38 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:38 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:38 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:39 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:39 /devices/wb-gpio/controls/A1_IN 1
Mar 11 13:35:40 /devices/wb-gpio/controls/A1_IN 0
Mar 11 13:35:40 /devices/wb-gpio/controls/A1_IN 1

Пойду к коллегам посоветуюсь.
Весьма похоже что на актуальных контроллерах WB8 в которых часть gpio управляется EC работать не будет.
Спрошу у коллег.

Не удалось выяснить?

Похоже дело все ж в модуле.
Добавил debug вывод:

[74338.713130] wiegand-gpio: irq=229 src=D0 dt_us=998923 bit=0 d0=0 d1=1
[74338.760630] Missed ticks 12
[74338.789827] wiegand-gpio: unexpected package len [1]
[74338.853311] Missed ticks 8
[74338.882362] Missed ticks 2
[74339.016706] Missed ticks 12
[74339.045113] Missed ticks 2
[74339.077429] Missed ticks 2
[74339.202650] Missed ticks 12
[74339.231047] Missed ticks 2
[74339.263368] Missed ticks 2
[74339.388571] Missed ticks 11
[74339.418852] Missed ticks 2
[74339.450941] Missed ticks 3
[74339.584351] Missed ticks 12
[74339.612706] Missed ticks 2
[74339.645038] Missed ticks 2
[74339.712035] wiegand-gpio: irq=229 src=D0 dt_us=998924 bit=0 d0=0 d1=1
[74339.770203] wiegand-gpio: unexpected package len [1]
[74339.829596] Missed ticks 18
[74339.858521] Missed ticks 1
[74339.891955] Missed ticks 3
[74340.024197] Missed ticks 12
[74340.054247] Missed ticks 2
[74340.085988] Missed ticks 2
[74340.212202] Missed ticks 12
[74340.240569] Missed ticks 2
[74340.272889] Missed ticks 2
[74340.398062] Missed ticks 11
[74340.428927] Missed ticks 2
[74340.463310] Missed ticks 3
[74340.593829] Missed ticks 12
[74340.624060] Missed ticks 2
[74340.658108] Missed ticks 2
[74340.661282] wiegand-gpio: irq=229 src=D0 dt_us=949251 bit=0 d0=0 d1=1
[74340.789608] wiegand-gpio: unexpected package len [1]

Сейчас исследую дальше.
То есть цель исследования, на текущем этапе - определить, опознаются ли котроткие импульсы.
Уже окружение CI/CD сделал, проще стало.

Потыкал осциллографом. Дело, все ж в входных цепях. Схемотехника входов A[1..4] в WB8:
резистор 100кОм, затем конденсатор 4700 на землю. Вот этот RC фильтр и режет короткие импульсы.
То есть импульсы короче 200мкс не проходят, шанс около 5%.
Для проверки увеличил длину импульсов на эмуляторе до 200мкс и получил “корректное” (но с неверными, не соответствующими переданному) результатами

[78295.888245] wiegand-gpio: irq=229 src=D0 dt_us=2019782 bit=0 d0=0 d1=0
[78295.898974] wiegand-gpio: irq=229 src=D0 dt_us=10736 bit=1 d0=0 d1=0
[78295.918196] wiegand-gpio: irq=229 src=D0 dt_us=19222 bit=2 d0=0 d1=0
[78295.952217] wiegand-gpio: irq=224 src=D1 dt_us=34020 bit=3 d0=0 d1=0
[78295.952230] wiegand-gpio: irq=229 src=D0 dt_us=14 bit=4 d0=0 d1=0
[78295.952639] wiegand-gpio: irq=229 src=D0 dt_us=407 bit=4 d0=0 d1=0
[78295.963368] wiegand-gpio: irq=224 src=D1 dt_us=10729 bit=5 d0=0 d1=0
[78295.974109] wiegand-gpio: irq=229 src=D0 dt_us=10741 bit=6 d0=0 d1=0
[78295.984821] wiegand-gpio: irq=229 src=D0 dt_us=10711 bit=7 d0=0 d1=0
[78295.995595] wiegand-gpio: irq=229 src=D0 dt_us=10773 bit=8 d0=0 d1=0
[78296.006366] wiegand-gpio: irq=224 src=D1 dt_us=10772 bit=9 d0=0 d1=0
[78296.017139] wiegand-gpio: irq=224 src=D1 dt_us=10773 bit=10 d0=0 d1=0
[78296.027913] wiegand-gpio: irq=229 src=D0 dt_us=10773 bit=11 d0=0 d1=0
[78296.038685] wiegand-gpio: irq=224 src=D1 dt_us=10772 bit=12 d0=0 d1=0
[78296.049460] wiegand-gpio: irq=229 src=D0 dt_us=10774 bit=13 d0=0 d1=0
[78296.060239] wiegand-gpio: irq=229 src=D0 dt_us=10776 bit=14 d0=0 d1=0
[78296.071014] wiegand-gpio: irq=229 src=D0 dt_us=10774 bit=15 d0=0 d1=0
[78296.081776] wiegand-gpio: irq=224 src=D1 dt_us=10767 bit=16 d0=0 d1=0
[78296.092557] wiegand-gpio: irq=229 src=D0 dt_us=10776 bit=17 d0=0 d1=0
[78296.103330] wiegand-gpio: irq=224 src=D1 dt_us=10773 bit=18 d0=0 d1=0
[78296.114102] wiegand-gpio: irq=229 src=D0 dt_us=10772 bit=19 d0=0 d1=0
[78296.124874] wiegand-gpio: irq=224 src=D1 dt_us=10772 bit=20 d0=0 d1=0
[78296.135617] wiegand-gpio: irq=224 src=D1 dt_us=10742 bit=21 d0=0 d1=0
[78296.146412] wiegand-gpio: irq=229 src=D0 dt_us=10784 bit=22 d0=0 d1=0
[78296.157169] wiegand-gpio: irq=229 src=D0 dt_us=10764 bit=23 d0=0 d1=0
[78296.214594] wiegand-gpio: frame-end bits=24 raw=14 68 ac
[78296.214623] wiegand-gpio: frame-valid bits=24 data=000101000110100010101100

Код эмулятора:

/*
 * Wiegand 26-bit Emulator for WB8 testing
 *
 * Wiring:
 *   Arduino A1  →  WB8 A1 IN (Wiegand D0, gpio-233)
 *   Arduino A2  →  WB8 A2 IN (Wiegand D1, gpio-228)
 *   Arduino GND →  WB8 GND
 *
 * Protocol:
 *   Both lines are normally HIGH (push-pull, active LOW)
 *   D0 pulse = bit 0, D1 pulse = bit 1
 *   Pulse width ~50us, inter-bit gap ~2ms
 *
 * 26-bit Wiegand frame:
 *   [EP][FC7..FC0][CN15..CN0][OP]
 *   EP  = even parity over bits 1-13
 *   FC  = 8-bit facility code
 *   CN  = 16-bit card number
 *   OP  = odd parity over bits 12-24
 */

#define PIN_D0   A1
#define PIN_D1   A2
#define PIN_LED  LED_BUILTIN  // pin 13, встроенный светодиод

#define PULSE_US           200U    // pulse width, microseconds
#define BIT_GAP_US       10000U    // gap between bits, microseconds
#define LINE_SETTLE_US     200U    // idle HIGH time before each bit
#define FRAME_GAP_MS        20U    // idle gap before a new frame
#define SEND_INTERVAL_MS  2000U    // send card every 2 seconds

// Test card: facility=0x12 (18), card=0x3456 (13398)
#define FACILITY_CODE  0x12
#define CARD_NUMBER    0x3456

void setup() {
  Serial.begin(9600);
  pinMode(PIN_D0, OUTPUT);
  pinMode(PIN_D1, OUTPUT);
  pinMode(PIN_LED, OUTPUT);
  digitalWrite(PIN_D0, HIGH);
  digitalWrite(PIN_D1, HIGH);
  digitalWrite(PIN_LED, LOW);
  // Мигнём 3 раза при старте
  for (int i = 0; i < 3; i++) {
    digitalWrite(PIN_LED, HIGH); delay(100);
    digitalWrite(PIN_LED, LOW);  delay(100);
  }
  Serial.println("Wiegand emulator ready.");
  Serial.print("Will send: facility=0x");
  Serial.print(FACILITY_CODE, HEX);
  Serial.print(" card=0x");
  Serial.println(CARD_NUMBER, HEX);
}

// Count number of set bits (for parity)
int countBits(uint32_t val, int nbits) {
  int count = 0;
  for (int i = 0; i < nbits; i++) {
    if (val & (1UL << i)) count++;
  }
  return count;
}

void sendPulse(int pin) {
  digitalWrite(PIN_D0, HIGH);
  digitalWrite(PIN_D1, HIGH);
  delayMicroseconds(LINE_SETTLE_US);

  digitalWrite(pin, LOW);
  delayMicroseconds(PULSE_US);
  digitalWrite(pin, HIGH);
}

void sendBit(int bitIndex, int bitValue) {
  Serial.print("Bit ");
  Serial.print(25 - bitIndex);
  Serial.print(": ");
  Serial.println(bitValue);

  if (bitValue) {
    sendPulse(PIN_D1);
  } else {
    sendPulse(PIN_D0);
  }

  delayMicroseconds(BIT_GAP_US);
}

void sendWiegand26(uint8_t facility, uint16_t card) {
  // Build 24-bit data (without parity): [FC7..FC0][CN15..CN0]
  uint32_t data = ((uint32_t)facility << 16) | card;
  uint16_t upper12 = (data >> 12) & 0x0FFF;
  uint16_t lower12 = data & 0x0FFF;

  // Even parity: over upper 12 bits (FC + CN[15..8])
  int epBit = (countBits(upper12, 12) % 2 == 0) ? 0 : 1;

  // Odd parity: over lower 12 bits (CN[7..0] + ...)
  int opBit = (countBits(lower12, 12) % 2 == 0) ? 1 : 0;

  // Build 26-bit frame
  uint32_t frame = ((uint32_t)epBit << 25) | (data << 1) | opBit;

  Serial.print("Sending 26-bit frame: 0x");
  Serial.print(frame, HEX);
  Serial.print(" (facility=");
  Serial.print(facility, DEC);
  Serial.print(" card=");
  Serial.print(card, DEC);
  Serial.println(")");

  digitalWrite(PIN_LED, HIGH);  // LED on — идёт передача
  digitalWrite(PIN_D0, HIGH);
  digitalWrite(PIN_D1, HIGH);
  delay(FRAME_GAP_MS);

  // Send bits MSB first
  for (int i = 25; i >= 0; i--) {
    sendBit(i, (frame & (1UL << i)) ? 1 : 0);
  }

  digitalWrite(PIN_LED, LOW);   // LED off — передача завершена
}

void loop() {
  sendWiegand26(FACILITY_CODE, CARD_NUMBER);
  delay(SEND_INTERVAL_MS);
}

Предварительный вывод: дело в схемотехнике.
Пожалуй, проще всего, использовать wiegand/modbus шлюз.
Либо подключиться к порту расширения, внутреннему. Но порт не толерантен к уровням 5 вольт.

Понял вас. Большое спасибо, что прояснили ситуацию

Да, еще вариант: использовать 1-wire входы. На них нет конденсаторов.
Сейчас проверю, раз уж занялся.

Выгружаю все от 1-wire, загружаю модуль

insmod /lib/modules/6.8.0-wb140/kernel/drivers/misc/wiegand-gpio.ko D0=108 D1=120 debug=1

Эмулятор подключен W1 (D0), W2(D1)
Получаю:

[81523.596429] wiegand-gpio: irq=104 src=D0 dt_us=2021318 bit=0 d0=1 d1=1
[81523.598890] wiegand-gpio: irq=104 src=D0 dt_us=2465 bit=1 d0=1 d1=1
[81523.608564] wiegand-gpio: irq=104 src=D0 dt_us=9674 bit=2 d0=1 d1=1
[81523.629348] wiegand-gpio: irq=104 src=D0 dt_us=20784 bit=3 d0=1 d1=1
[81523.653779] wiegand-gpio: irq=116 src=D1 dt_us=24431 bit=4 d0=1 d1=1
[81523.686104] wiegand-gpio: irq=104 src=D0 dt_us=32325 bit=5 d0=1 d1=1
[81523.718348] wiegand-gpio: irq=116 src=D1 dt_us=32244 bit=6 d0=1 d1=1
[81523.728062] wiegand-gpio: irq=116 src=D1 dt_us=9703 bit=7 d0=1 d1=1
[81523.739475] wiegand-gpio: irq=104 src=D0 dt_us=11412 bit=8 d0=1 d1=1
[81523.750913] wiegand-gpio: irq=104 src=D0 dt_us=11440 bit=9 d0=1 d1=1
[81523.762315] wiegand-gpio: irq=104 src=D0 dt_us=11409 bit=10 d0=1 d1=1
[81523.785171] wiegand-gpio: irq=104 src=D0 dt_us=22857 bit=11 d0=1 d1=1
[81523.808028] wiegand-gpio: irq=104 src=D0 dt_us=22857 bit=12 d0=1 d1=1
[81523.830888] wiegand-gpio: irq=116 src=D1 dt_us=22859 bit=13 d0=1 d1=1
[81523.842301] wiegand-gpio: irq=104 src=D0 dt_us=11412 bit=14 d0=1 d1=1
[81523.871988] wiegand-gpio: irq=104 src=D0 dt_us=29688 bit=15 d0=1 d1=1
[81523.997175] wiegand-gpio: frame-end bits=16 raw=0b 04
[81523.997192] wiegand-gpio: frame-valid bits=16 data=0000101100000100
[81525.875040] wiegand-gpio: irq=104 src=D0 dt_us=2003075 bit=0 d0=1 d1=1
[81525.884546] wiegand-gpio: irq=104 src=D0 dt_us=9512 bit=1 d0=1 d1=1
[81525.916862] wiegand-gpio: irq=104 src=D0 dt_us=32317 bit=2 d0=1 d1=1
[81525.949101] wiegand-gpio: irq=116 src=D1 dt_us=32239 bit=3 d0=1 d1=1
[81525.949130] wiegand-gpio: irq=104 src=D0 dt_us=28 bit=4 d0=1 d1=1
[81525.949529] wiegand-gpio: irq=104 src=D0 dt_us=396 bit=4 d0=1 d1=1
[81525.960943] wiegand-gpio: irq=104 src=D0 dt_us=11411 bit=5 d0=1 d1=1
[81525.972379] wiegand-gpio: irq=116 src=D1 dt_us=11442 bit=6 d0=1 d1=1
[81525.983794] wiegand-gpio: irq=116 src=D1 dt_us=11414 bit=7 d0=1 d1=1
[81525.995236] wiegand-gpio: irq=104 src=D0 dt_us=11443 bit=8 d0=1 d1=1
[81526.006650] wiegand-gpio: irq=116 src=D1 dt_us=11414 bit=9 d0=1 d1=1
[81526.018094] wiegand-gpio: irq=104 src=D0 dt_us=11444 bit=10 d0=1 d1=1
[81526.029509] wiegand-gpio: irq=104 src=D0 dt_us=11415 bit=11 d0=1 d1=1
[81526.052368] wiegand-gpio: irq=116 src=D1 dt_us=22858 bit=12 d0=1 d1=1
[81526.075223] wiegand-gpio: irq=116 src=D1 dt_us=22856 bit=13 d0=1 d1=1
[81526.102922] wiegand-gpio: irq=116 src=D1 dt_us=27698 bit=14 d0=1 d1=1
[81526.135153] wiegand-gpio: irq=104 src=D0 dt_us=32232 bit=15 d0=1 d1=1
[81526.135163] wiegand-gpio: irq=116 src=D1 dt_us=10 bit=16 d0=1 d1=1
[81526.228168] wiegand-gpio: frame-end bits=16 raw=13 4e
[81526.228180] wiegand-gpio: frame-valid bits=16 data=0001001101001110
[81528.153655] wiegand-gpio: irq=104 src=D0 dt_us=2018512 bit=0 d0=1 d1=1
[81528.158615] wiegand-gpio: irq=104 src=D0 dt_us=4967 bit=1 d0=1 d1=1
[81528.190346] wiegand-gpio: irq=104 src=D0 dt_us=31732 bit=2 d0=1 d1=1
[81528.190372] wiegand-gpio: irq=116 src=D1 dt_us=26 bit=3 d0=1 d1=1
[81528.196971] wiegand-gpio: irq=104 src=D0 dt_us=6600 bit=3 d0=1 d1=1
[81528.217752] wiegand-gpio: irq=104 src=D0 dt_us=20781 bit=4 d0=1 d1=1
[81528.228128] wiegand-gpio: irq=104 src=D0 dt_us=10375 bit=5 d0=1 d1=1
[81528.239573] wiegand-gpio: irq=104 src=D0 dt_us=11444 bit=6 d0=1 d1=1
[81528.250986] wiegand-gpio: irq=116 src=D1 dt_us=11414 bit=7 d0=1 d1=1
[81528.273845] wiegand-gpio: irq=104 src=D0 dt_us=22859 bit=8 d0=1 d1=1
[81528.296704] wiegand-gpio: irq=104 src=D0 dt_us=22858 bit=9 d0=1 d1=1
[81528.316791] wiegand-gpio: irq=104 src=D0 dt_us=20087 bit=10 d0=1 d1=1
[81528.349134] wiegand-gpio: irq=104 src=D0 dt_us=32343 bit=11 d0=1 d1=1
[81528.349145] wiegand-gpio: irq=116 src=D1 dt_us=11 bit=12 d0=1 d1=1
[81528.365275] wiegand-gpio: irq=104 src=D0 dt_us=16119 bit=12 d0=1 d1=1
[81528.376723] wiegand-gpio: irq=116 src=D1 dt_us=11445 bit=13 d0=1 d1=1
[81528.388131] wiegand-gpio: irq=116 src=D1 dt_us=11411 bit=14 d0=1 d1=1
[81528.410992] wiegand-gpio: irq=104 src=D0 dt_us=22859 bit=15 d0=1 d1=1
[81528.464376] wiegand-gpio: frame-end bits=16 raw=01 06
[81528.464396] wiegand-gpio: frame-valid bits=16 data=0000000100000110


результат со стандартными длительностями импульсов лучше. Но чтение нестабильно.
В общем требуется участие настоящего разработчика, способного в ядро.
То есть простая сборка модуля предназначеного для ядра 4 под 6 ядро (по моему) не срабатывает.
Попрошу разработчиков глянуть.

Добрый день!

Получили обратную связь от разработчиков. На данный момент Wiegand на контроллере не поддерживается. Разработчики планируют реализовать эту интеграцию, но пока она связана с рядом технических трудностей.

Как только появятся новости, сообщим о поддержке через наш канал в Telegram.