Wiznet makers

Grace_Koo

Published April 03, 2026 ©

48 UCC

25 WCC

9 VAR

0 Contests

0 Followers

0 Following

Original Link

VIXacu

A commercial ACU firmware by INTELLIVIX, built on STM32L4S5 + WIZnet W6100, supporting Wiegand access control, CMS integration, and OTA updates.

COMPONENTS Hardware components

WIZnet - W6100

x 1


PROJECT DESCRIPTION

IP-Based Access Control Unit Firmware Built with STM32 + W6100

A real-world open-source firmware for a commercial-grade Access Control Unit (ACU), implemented using the WIZnet W6100 Ethernet chip and STM32 MCU.


ItemDetails
DeveloperINTELLIVIX
Firmware Version1.15.31 (VX/KR)
MCUSTM32L4S5ZITX (Cortex-M4, up to 120MHz)
Ethernet ChipWIZnet W6100 (IPv4/IPv6 Dual-Stack, SPI)
Build EnvironmentSTM32CubeIDE, C

Who is INTELLIVIX?

https://www.intellivix.ai/

Founded in 2000, INTELLIVIX is a Korean Vision AI company specializing in CCTV-based security and safety solutions across industrial safety, public safety, defense, and transportation sectors. The company is an NVIDIA Metropolis partner and has supplied CCTV security management systems for the 2018 PyeongChang Winter Olympics. VIXacu demonstrates that INTELLIVIX develops not only Vision AI software, but also the embedded firmware for its own access control hardware.


What is VIXacu?

VIXacu is INTELLIVIX's Access Control Unit (ACU) product. According to the official product page:

  • 4-channel support
  • Multiple authentication methods: RF card, fingerprint, facial recognition, and more
  • Multi-access mode: single authentication and multi-factor authentication combinations
  • TCP/IP and RS485 communication support
  • Scalable: multiple units can be connected to build large-scale networked access control systems

This repository contains the actual firmware running on the VIXacu hardware, implemented on STM32L4S5 + WIZnet W6100.

🔗 Product Page: https://www.intellivix.ai/product/ai-access-security/vix-acu


What Is This Project?

VIXAcu Image
https://www.intellivix.ai/product/ai-access-security/vix-acu

An ACU (Access Control Unit) is the core device that controls access to building doors. When an RF card is tapped, the relay activates, the door lock opens, and the event is logged to a server.

This project is the actual commercial firmware for that ACU. Developed by INTELLIVIX, it is a production-grade implementation covering everything from card authentication and fire alarm integration to OTA firmware updates.

Network communication is handled entirely by the WIZnet W6100, which processes IPv4/IPv6 Dual-Stack in hardware and manages multiple simultaneous connections — HTTP client, UDP, TCP, and more — across its 8 independent sockets.

💡 In one sentence: A commercial ACU firmware based on STM32L4S5 + WIZnet W6100, supporting Wiegand card readers, relay door locks, HTTP server integration, OTA updates, and fire alarm integration.


1. Background

An access control unit does far more than read a card and open a door. It requires real-time server integration, event logging, automatic door release on fire signals, and remote firmware updates — all in a single embedded device.

This firmware implements all of that using a Super-loop architecture with no RTOS. Millisecond-level timing is handled by the TIM7 interrupt, while card authentication, door control, Ethernet socket handling, RS485, and UART forwarding are all processed sequentially within a single main loop.


2. Hardware Configuration

ItemDetails
MCUSTM32L4S5ZITX (Cortex-M4, up to 120MHz, 2MB Flash, 640KB RAM)
EthernetWIZnet W6100 (IPv4/IPv6 Dual-Stack, SPI)
External Flash64MB NOR Flash via OCTOSPI (card DB / event log / OTA firmware)
EEPROM24LC128-class I2C EEPROM (configuration parameters)
RTCI2C RTC (MCP7940N)
LED DriverPCA9552 (I2C LED control)
Communication PortsUSART1 (forwarding) / USART2 (RS485) / USART3 (factory ATE) / UART4 (debug)
Security AcceleratorsCRC, HASH, RNG (STM32 hardware built-in)

3. The Role of W6100

W6100 serves as the dedicated network hardware in this project. Rather than implementing TCP/IP directly on the STM32, the firmware controls W6100's hardware TCP/IP stack through a SPI socket API. SPI operates with DMA, enabling maximum throughput with minimal CPU overhead.

Eight sockets are defined in the codebase. The actual operational status of each, based on code review, is as follows:

SocketPurposeStatus
0HTTP Client — sends access events and status to CMS server via HTTP POST (JSON)✅ Active
2UDP Echo Server (port 15693) — reflects received data back to sender; used for connectivity testing✅ Active
3Fire Signal UDP Server — triggers automatic door release on "Fire!" reception✅ Active
4Management TCP Server (port 14443) — receives commands from management PC: status check, time set, reboot, card DB write, etc.✅ Active
6TA TCP Client — branch code exists but the main loop call is commented out⚠️ Inactive
1HTTPS❌ Defined only
5UPnP Eventing❌ Defined only
7Network status monitoring — actual monitoring handled by separate functions (EthernetLinkCheck())❌ Defined only

Sockets are managed by polling each socket state every cycle within the Super-loop. Network settings (MAC, IP, Gateway, DNS, server IP/Port) are loaded from EEPROM at startup. A recovery mechanism retries the HTTP client connection up to 5 times before triggering a DHCP restart.

OTA firmware updates are also routed through W6100. Firmware binaries received over TCP/HTTP are written to External NOR Flash, and the update is applied after CRC verification followed by a system reset.


4. Key Features

Access Control

  • 4x Wiegand input ports (26-bit/34-bit auto-detection)
  • RF card and mobile card authentication
  • 6x relay outputs (door lock control), 2x TTL outputs
  • Door lock modes: Normal / Manual open·lock / Schedule open·lock

Event & History Logging

  • Event log: up to 2,250 entries (29 bytes/entry) → stored in External NOR Flash
  • Access log: up to 2,250 entries (17 bytes/entry)
  • 40+ event codes: fire, emergency, alarm, access, door open, battery, and more

Security & Encryption

  • SHA-256, MD5, DES (software)
  • CRC-32 (STM32 hardware accelerated)
  • RNG — Random Number Generator (STM32 hardware)
  • Base64 encoding / card PIN verification

OTA Firmware Update

The External NOR Flash maintains dual regions — NEW and BAK. After a new firmware image is received and passes CRC verification, it is applied via system reset. If the update fails, the BAK region allows rollback recovery. Ymodem-based protocol is supported.

Special Features

  • Fire integration: Automatic door release on fire signal reception
  • Anti-theft gate: Integration with E-Land retail group
  • RS485 client mode: Remote control via PC
  • IWDG: Hardware reset on abnormal behavior (disabled in DEBUG_MODE)
  • Factory ATE test mode: Built-in mode for mass production testing

5. Software Architecture

The firmware runs without an RTOS, using a Super-loop structure. The TIM7 interrupt handles millisecond-level timing, and each task executes sequentially within the main loop.

main()
 ├── Hardware init (HAL, Clock, GPIO, DMA, SPI, I2C, UART...)
 ├── SystemTask()          ← Load EEPROM parameters, print version
 ├── InputInit()           ← Initialize GPIO inputs
 ├── Wiegand_init_value()  ← Initialize Wiegand ports
 ├── EthernetCommunication() / OPEN_Ethernet() ← Initialize W6100
 └── while(1)
      ├── InTask()          ← Input handling, door control, fire/tamper detection
      ├── WiegandProcess()  ← Card read processing
      ├── SPI1NetTask()     ← Ethernet socket handling (TA server communication)
      ├── HTTPC_Task()      ← HTTP client (CMS server integration)
      ├── SCI1FwdTask()     ← USART1 forwarding
      ├── SCI2Rs485Task()   ← RS485 handling
      └── SCI3FacTask()     ← Factory test handling

6. Tech Stack Summary

CategoryDetails
MCUSTM32L4S5ZITX (Cortex-M4, 120MHz, Ultra-low-power)
Ethernet ChipWIZnet W6100 (IPv4/IPv6 Dual-Stack, SPI)
Ethernet LibraryW6100Lib (based on io6Library)
Build EnvironmentSTM32CubeIDE, C (94.4%), Makefile
OS ArchitectureNo RTOS, Super-loop + TIM7 interrupt
External Memory64MB NOR Flash (OCTOSPI), I2C EEPROM
Supported CardsWiegand 26/34-bit, RF card, mobile card
Communication ProtocolsHTTP/HTTPS, UDP, TCP, RS485, UPnP
SecuritySHA-256, MD5, DES, CRC-32, RNG, Base64
OTA MethodYmodem-based, dual region (NEW/BAK) + CRC verification

FAQ

Q. Can multiple features run simultaneously without an RTOS? In the Super-loop structure, each task completes its processing quickly before the next cycle begins, while the TIM7 interrupt guarantees millisecond-level timing. Given that access control does not demand strict hard real-time constraints, this architecture provides sufficiently stable operation.

Q. Why does this project specifically need IPv6 support from W6100? Enterprise and government building networks are increasingly transitioning to IPv6. W6100's hardware Dual-Stack support allows the device to operate in both IPv4 and IPv6 environments without any additional software stack — a practical advantage for security devices deployed in modern network infrastructures.

Q. Can this architecture be applied to other access control products? The firmware is built on STM32 HAL, making it relatively straightforward to port to other STM32L4-series MCUs. The W6100Lib is structured as an independent module, allowing the network layer to be reused. The Wiegand protocol handling and relay control logic are also patterns that can be applied broadly across different access control hardware designs.

Documents
  • github

Comments Write