Skip to content

Automotive-9/GMLanDebug

Repository files navigation

GMLanDebug

A modern Windows desktop application for real-time GM vehicle CAN bus monitoring and decoding

Platform .NET Framework Language License


Core Features

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

Protocol Coverage

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

Hardware Requirements

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)

Screenshots

Handling high volume of CAN bus traffic:

image

UI Overview:

yes

Decoding vehicle date and time:

IMG20241221140906


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)

Key Features Breakdown

Message Decoding

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

Specialized Parsers

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

Project Structure

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

References

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

About

Real-Time GM(Lan) Canbus Analyzer and Decoder

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages