Feature
Description
Real-time CAN Monitoring
Live capture and display of GMLan traffic with up to hundreds of messages per second
Message Decoding
Convert raw CAN IDs to human-readable format with ECU identification
High-Volume Processing
Efficient handling of large amounts of CAN traffic with configurable buffering (default 500 messages)
Smart Filtering
Show all, show selected, or hide selected message types with real-time statistics
Message Deduplication
Intelligent caching system filters repeated identical messages (configurable time windows)
Arduino Integration
Automatic device detection and serial communication at 115200 baud
Protocol Support
Comprehensive mapping for 195+ GMLan message types (88 HS-GMLan, 107+ LS-GMLan)
Virtual List View
Double-buffered, high-performance rendering for smooth display
Supported GMLan Message Categories
High-Speed GMLan (88 Messages)
Low-Speed GMLan (107+ Messages)
Engine Status (5 variants)
Power Mode Management
Transmission Status (3 variants)
Door Lock/Unlock Status
Wheel Rotational Status
Climate Control Systems
Brake & Cruise Control
GPS Date/Time & Location
Steering Wheel Angle
Seat Temperature Control
Vehicle Speed & Distance
Window/Mirror Controls
Battery Information
Audio/Entertainment Systems
ABS/TC Status
Airbag Systems
Torque Requests & Status
Lighting Controls
Hybrid System Information
Security Systems
VIN Information
Parking Assistance
Diagnostic Trouble Codes
Display/Infotainment Commands
Platform Configuration
Tire Pressure Monitoring
ECU Identification System
GMLanDebug automatically identifies the sender ECU based on CAN ID ranges:
ECU Category
ID Range
Examples
Powertrain Integration
0x00-0x10
Manufacturing systems
Engine Controllers
0x10-0x18
ECM, TCM
Transmission Controllers
0x18-0x20
Transmission control modules
Chassis Integration
0x20-0x28
Chassis systems
Brake Controllers
0x28-0x30
ABS, TC, ESP
Steering Controllers
0x30-0x38
Power steering
Suspension Controllers
0x38-0x40
Active suspension
Body Integration
0x40-0x58
Body control modules
Restraints
0x58-0x60
Airbag systems
Driver Information
0x60-0x70
Instrument clusters
Lighting
0x70-0x80
Headlights, signals
Entertainment/Audio
0x80-0xA0
Radio, infotainment
Convenience
0xA0-0xC0
Doors, seats, windows
Security
0xC0-0xC8
Anti-theft systems
Component
Specification
Arduino
Uno, Uno R3, or Due
CAN Controller
MCP2515 (recommended)
Shield
Seeed Studio CANBUS Shield (compatible)
Connection
USB to PC
Vendor ID
0x2341 (Arduino)
Supported Models
Uno (0x0001), Uno R3 (0x0043), Due (0x003E)
Handling high volume of CAN bus traffic:
UI Overview:
Decoding vehicle date and time:
Message Processing Pipeline
Arduino CAN Shield
↓
Serial Port (115200 baud)
↓
SerialPortReader (async DataReceived event)
↓
ConcurrentQueue<string>
↓
GMLanMessage Parser (regex-based)
↓
Message Cache (deduplication)
↓
Filter System (show/hide logic)
↓
Virtual ListView (UI display)
GMLanDebug parses CAN messages into structured data:
Field
Example
Description
CAN ID
0x0C030040
Full extended CAN identifier
Header
0x0C0300
Protocol header (6 hex digits)
Sender
0x40 (64)
ECU identifier
Priority
0x0C
Message priority
DLC
8
Data Length Code (1-8 bytes)
Data
0x0 0x0 0x0...
Payload bytes
Message Type
Header
Decoded Output
GPS Date/Time
0x100A60
"HH:MM:SS - Month Day Year"
Vehicle Speed
0x3E9
Speed and odometer data
Engine Status
0x0C9
RPM, temperature, status flags
GMLanDebug/
├── Program.cs # Entry point (console window allocation)
├── MainWindow.cs # Main UI logic and message processing
├── App.config # .NET Framework 4.8 configuration
│
├── ui/ # User interface components
│ ├── FilterControlWindow.cs # Message filtering UI
│ ├── MessageViewWindow.cs # Detailed message viewer
│ ├── SerialDevicePicker.cs # Arduino device selection
│ ├── GMLanListViewItem.cs # Message list rendering
│ └── GMLanMessageCache.cs # Deduplication cache
│
├── util/ # Core logic components
│ ├── GMLanMessage.cs # CAN message parsing
│ ├── GMLanMapping.cs # Protocol mapping structure
│ ├── MessageTranslation.cs # Data interpretation
│ │
│ ├── serial/ # Arduino communication
│ │ ├── SerialDevice.cs # Device information
│ │ ├── SerialPortReader.cs # Async serial reading
│ │ ├── SerialPortScanner.cs # Windows device enumeration (WMI)
│ │ └── SerialUtils.cs # Arduino model identification
│ │
│ └── translation/ # Protocol-specific parsers
│ ├── HsLan.cs # High-speed CAN mappings (88 messages)
│ ├── LsLan.cs # Low-speed CAN mappings (107+ messages)
│ └── TranslationUtils.cs # Helper utilities
│
└── Properties/ # .NET project properties
Performance Optimizations
Optimization
Implementation
Virtual ListView
Lazy loading with double-buffered rendering
Message Deduplication
Concurrent dictionary with configurable expiration (default 3000ms)
Thread-Safe Queuing
ConcurrentQueue for message processing
Configurable Retention
User-adjustable max messages (default 500)
Background Cleanup
Automatic cache cleanup (default 1000ms interval)
Auto-Scroll Control
Scroll to bottom only when active logging
Resource
Description
GMLanBible
Comprehensive GMLan protocol documentation
Doc88 Downloader
PDF documentation extraction tool
PCM Hacking
Automotive hacking and reverse engineering resources
Built with C# and .NET Framework 4.8 for high-performance GM vehicle diagnostics