Hacker News new | past | comments | ask | show | jobs | submit login
Bringing up 802.11ac on FreeBSD (adrianchadd.blogspot.com)
135 points by tdurden on May 8, 2017 | hide | past | favorite | 18 comments



How does...one reach this level of understanding in systems programming? My coursework in this area was very general at best. Are there any courses out there that focus on this theory-meets-real-world level that you folks would recommend? Would prefer one in Linux, but I'm not that picky.

Or does one just happen into these jobs as an apprentice and spend years learning on the job?


I used to work with wireless driver guys. Some of them had no degrees (including one who worked at Lucent on Apple's Airport). Just started out doing small stuff and worked their way up. Others had EE backgrounds. One of the things about wireless is that the salient concepts are more EE than CS, even if you're on the software side. A specialized EE course on wireless communications will teach you a lot of the underlying concepts you need to understand.


Yes, it's learning on the job.

In the specific case of 802.11 (different from 'Wi-Fi' which is a marketing term from the Wi-Fi consortium), you'll also need to be familiar with the IEEE 802.11 specifications. You can do this by putting aside a block of time to read parts of the actual specs [1], supplemented by the O'Reilly 802.11 books by Matthew Gast [2] which I found to be really helpful during my time working with various 802.11 modules.

[1] [ http://standards.ieee.org/about/get/802/802.11.html ]

[2] [ http://www.oreilly.com/pub/au/692 ]


wow specs that are free.. in the wireless world a lot of specs are free, as I just googled. however later that day I worked with NXP NTAG's 213-216 and tried to figure out more specifications especially about NDEF and they were put behind big paywalls. very very sad (http://nfc-forum.org/our-work/specifications-and-application...) I always wonder how to push such technologies, if you can't implement it without paying. it's just akward.


Adrian could speak for himself but my guess is from what he has written in the past that he got his start by being mentored by one of the FreeBSD developers. FreeBSD is big on assigning mentors to those interested in developing for it. So if you have an interest in getting all up in the underwear of an Unix OS you might consider developing for FreeBSD. I'm sure they would love be to have another developer join their ranks!


hi! you can totally ask me that! (I'm adrian)

TL;DR is - I learnt on the job and as a hobby, and I came to it having some idea of kernels and networking already.


You join or start an open source project.

Long ago, Adrian got taken under the wing of a well-know FreeBSD developer.


loooooooooong ago.


Apprentice in system programming? Never seen one.

As most other things it comes to passion. If you literally write C in your dreams and spend every waking hour hacking OS kernels you'll get to be very good.


you find something that really bothers you and dig deep. REALLY deep.

do it enough times, and you too will write blog posts like these.


I think in this case this is mostly having access to the right specs, and preferrably having spent time working on the controller firmware...


By doing it. If you look at enough code, ask specific questions on IRC or mailing lists, and follow through on the references, you'll eventually learn.


Adrian Chadd is FreeBSD's Wireless One-Man-Army. Awesome stuff.


> If I chose, say, the Intel 11ac parts then I'd have to implement a lot more of the fiddly stuff to get good behaviour

Okay, I'll have to wait another year to get 11ac on my laptop :) It's not, like, super critical to me, 11a is enough for most daily tasks and for e.g. system upgrades I just connect to Ethernet (BTW it's super easy to set up seamless handover between Wi-Fi and Ethernet on FreeBSD, using link aggregation)

Nice work, Adrian!


"When men were men, and wrote their own device drivers..." — Linus Torvalds


Hah. It wasn't so long ago that I heard Adrian swearing he would NOT be writing an Atheros driver.


Hats off to people who are skilled enough, and have the will, to implement these things in open source.


Sweet! This is a badly needed feature




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: