<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr" -->

---
title: CANBUS – Networking so simple, even YOU can understand it!
description: A deep-dive into CAN (Controller Area Network), the two-wire networking protocol used in vehicles and industrial equipment. Covers the physical layer including...
canonical: https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: CANBUS – Networking so simple, even YOU can understand it! | daily.dev
og:description: A deep-dive into CAN (Controller Area Network), the two-wire networking protocol used in vehicles and industrial equipment. Covers the physical layer including...
og:url: https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr
og:image: https://api.daily.dev/og/posts/T54h2ggrr.png
og:image:alt: CANBUS – Networking so simple, even YOU can understand it!
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# CANBUS – Networking so simple, even YOU can understand it!

**[Dave's Garage](https://daily.dev/sources/davesgarage)** · 23 min read · 1 upvotes · 1 comments

## Summary

A deep-dive into CAN (Controller Area Network), the two-wire networking protocol used in vehicles and industrial equipment. Covers the physical layer including differential signaling on CAN high/CAN low wires, how dominant (zero) and recessive (one) bits work, bus termination with 120-ohm resistors, and non-destructive bitwise arbitration — the elegant mechanism by which lower-numbered message IDs win bus access without corrupting competing transmissions. Also explains frame structure (up to 8 data bytes), CRC error checking, bit stuffing for clock recovery, acknowledgement slots, and fault confinement (error-active, error-passive, bus-off states). Demonstrated live on a bench using two ESP32 microcontrollers with CAN transceivers connected to a real Corvette Z06 ECM. Security implications of CAN's lack of frame authentication are discussed, including how the open broadcast model enables both legitimate hacking (BMW M3 convertible top automation) and potential spoofing attacks.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=QTTCqGtT6I4>

## Questions this post answers

### How does CAN bus arbitration resolve two controllers transmitting at the same time without corrupting either message?

CAN uses non-destructive bitwise arbitration: every message starts with an identifier sent bit by bit from the most significant bit, where a dominant zero always overrides a recessive one on the shared wires. When two controllers send differing bits, the one sending a recessive one reads back a dominant zero, realizes it lost arbitration, and silently stops transmitting while the other continues unaffected, so the higher-priority (lower-numbered) message goes through unscathed on the first attempt.

_daily.dev surfaces embedded networking deep dives like this for engineers debugging real-time bus contention._

### What resistance should a properly terminated CAN bus measure across CAN high and CAN low?

A healthy, fully terminated high-speed CAN bus measures approximately 60 ohms between CAN high and CAN low when unpowered. This comes from two 120 ohm termination resistors placed at each physical end of the cable, which appear in parallel when measured across the bus, halving the resistance to around 60 ohms.

_Engineers troubleshooting vehicle or industrial CAN wiring can find practical hardware checks like this through daily.dev._

### How many data bytes can a classic CAN frame carry and why is that enough for automotive use?

A classic CAN frame carries up to eight data bytes per message. That is sufficient for compact measurements and commands such as engine RPM, status flags, and rolling counters, since automotive signals don't require large payloads like a JPEG attachment, just enough context defined by the vehicle's private message format to interpret the bytes correctly.

_daily.dev helps developers working with constrained embedded protocols keep up with practical automotive networking details._

## Community discussion

Top comments from developers on daily.dev.

**@bjmccaskill** · 0 upvotes

> Lifesaver. Thank you.

## Similar posts on daily.dev

- [TI Unveils CAN XL Transceiver](https://daily.dev/posts/ti-unveils-can-xl-transceiver-4qouxi9p0) · Embedded.com · 0 upvotes · 0 comments
- [Emaan Rana](https://daily.dev/posts/emaan-rana-u3xqpnnwh) · Lobsters · 0 upvotes · 0 comments
- [Computer Networks Explained: The Complete Guide](https://daily.dev/posts/computer-networks-explained-the-complete-guide-uozado4ud) · Medium · 0 upvotes · 0 comments
- [A Tool For Testing CANopen Networks](https://daily.dev/posts/a-tool-for-testing-canopen-networks-l3opuopjo) · Hackaday · 0 upvotes · 0 comments

---

Tags: [#iot](https://daily.dev/tags/iot), [#networking](https://daily.dev/tags/networking), [#embedded](https://daily.dev/tags/embedded), [#automotive](https://daily.dev/tags/automotive)

[View this post on daily.dev](https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"CANBUS – Networking so simple, even YOU can understand it!","url":"https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr"},"datePublished":"2026-07-20T20:01:04.647Z","dateModified":"2026-09-14T09:29:02.903Z","description":"A deep-dive into CAN (Controller Area Network), the two-wire networking protocol used in vehicles and industrial equipment. Covers the physical layer including...","image":"https://i.ytimg.com/vi/QTTCqGtT6I4/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/QTTCqGtT6I4/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Dave's Garage","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Dave's Garage","logo":"https://media.daily.dev/image/upload/s--1Gw4wrLn--/f_auto/v1710012430/logos/davesgarage","url":"https://daily.dev/sources/davesgarage"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"iot,networking,embedded,automotive","timeRequired":"PT23M","video":{"@type":"VideoObject","name":"CANBUS – Networking so simple, even YOU can understand it!","description":"A deep-dive into CAN (Controller Area Network), the two-wire networking protocol used in vehicles and industrial equipment. Covers the physical layer including...","thumbnailUrl":"https://i.ytimg.com/vi/QTTCqGtT6I4/sddefault.jpg","uploadDate":"2026-07-20T20:01:04.647Z","duration":"PT23M","url":"https://api.daily.dev/r/T54h2ggrr","embedUrl":"https://www.youtube.com/embed/QTTCqGtT6I4"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Dave's Garage","item":"https://daily.dev/sources/davesgarage"},{"@type":"ListItem","position":3,"name":"CANBUS – Networking so simple, even YOU can understand it!"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr","comment":[{"@type":"Comment","text":"Lifesaver. Thank you.","datePublished":"2026-08-01T02:37:21.495Z","url":"https://daily.dev/posts/T54h2ggrr#c-2zH8QhbJ6","author":{"@type":"Person","name":"BJ McCaskill","url":"https://daily.dev/bjmccaskill","image":"https://lh3.googleusercontent.com/a/ACg8ocJct49m_KOUKTs5MNPfGIggst-ThcCnjMh-MDvSlAkhkSzk6A=s96-c"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/canbus-networking-so-simple-even-you-can-understand-it--t54h2ggrr#faq","mainEntity":[{"@type":"Question","name":"How does CAN bus arbitration resolve two controllers transmitting at the same time without corrupting either message?","acceptedAnswer":{"@type":"Answer","text":"CAN uses non-destructive bitwise arbitration: every message starts with an identifier sent bit by bit from the most significant bit, where a dominant zero always overrides a recessive one on the shared wires. When two controllers send differing bits, the one sending a recessive one reads back a dominant zero, realizes it lost arbitration, and silently stops transmitting while the other continues unaffected, so the higher-priority (lower-numbered) message goes through unscathed on the first attempt. daily.dev surfaces embedded networking deep dives like this for engineers debugging real-time bus contention."}},{"@type":"Question","name":"What resistance should a properly terminated CAN bus measure across CAN high and CAN low?","acceptedAnswer":{"@type":"Answer","text":"A healthy, fully terminated high-speed CAN bus measures approximately 60 ohms between CAN high and CAN low when unpowered. This comes from two 120 ohm termination resistors placed at each physical end of the cable, which appear in parallel when measured across the bus, halving the resistance to around 60 ohms. Engineers troubleshooting vehicle or industrial CAN wiring can find practical hardware checks like this through daily.dev."}},{"@type":"Question","name":"How many data bytes can a classic CAN frame carry and why is that enough for automotive use?","acceptedAnswer":{"@type":"Answer","text":"A classic CAN frame carries up to eight data bytes per message. That is sufficient for compact measurements and commands such as engine RPM, status flags, and rolling counters, since automotive signals don't require large payloads like a JPEG attachment, just enough context defined by the vehicle's private message format to interpret the bytes correctly. daily.dev helps developers working with constrained embedded protocols keep up with practical automotive networking details."}}]}
```

