Skip to content

Instantly share code, notes, and snippets.

@lisovy
Last active October 8, 2023 23:32
Show Gist options
  • Save lisovy/80dde5a792e774a706a9 to your computer and use it in GitHub Desktop.
Save lisovy/80dde5a792e774a706a9 to your computer and use it in GitHub Desktop.
Clone and compile the Linux kernel
==================================
# Use some extra directory for all the components needed
cd c2c/
# Clone the repository (this will take a *few minutes*)
c2c$ git clone https://github.com/CTU-IIG/802.11p-linux.git
c2c$ cd 802.11p-linux
# Checkout particular branch
c2c/802.11p-linux$ git checkout its-g5_v3
# Prepare the folder for compilation
c2c/802.11p-linux$ mkdir _build
# Use the appropriate defconfig
c2c/802.11p-linux$ make O=_build x86_64_defconfig
# Configure the kernel if necessary (enable MAC80211_OCB_DEBUG, CONFIG_MAC80211_STA_DEBUG etc.)
c2c/802.11p-linux$ cd _build
c2c/802.11p-linux/_build$ make menuconfig
# Run the compilation
c2c/802.11p-linux/_build$ make -j4
# Install the modules and the kernel
c2c/802.11p-linux/_build$ sudo make modules_install
c2c/802.11p-linux/_build$ sudo make install
iw -- wifi configuration tool
=============================
# Use some extra directory for all the components needed
cd c2c/
# Install libnl development files
c2c$ sudo apt-get install libnl-dev
# Clone the official iw repository
c2c$ git clone https://github.com/CTU-IIG/802.11p-iw.git
c2c$ cd 802.11p-iw
c2c/802.11p-iw$ git checkout its-g5_v3
# Build it
c2c/802.11p-iw$ make
# Install it
c2c/802.11p-iw$ sudo PREFIX=/ make install
# Test it
c2c/802.11p-iw$ /sbin/iw | grep -i ocb
dev <devname> ocb leave
dev <devname> ocb join <freq in MHz> <5MHZ|10MHZ> [fixed-freq]
wireless-regdb -- regulatory information
========================================
# Use some extra directory for all the components needed
cd c2c/
# Install some extra packages
c2c$ sudo apt-get install python-m2crypto
# Clone the repository
c2c$ git clone https://github.com/CTU-IIG/802.11p-wireless-regdb.git
c2c$ cd 802.11p-wireless-regdb
c2c/802.11p-wireless-regdb$ git checkout its-g5_v1
c2c/802.11p-wireless-regdb$ make
c2c/802.11p-wireless-regdb$ sudo PREFIX=/ make install
CRDA -- Central Regulatory Domain Agent
=======================================
# Use some extra directory for all the components needed
cd c2c/
# Install some extra packages
c2c$ sudo apt-get install python-m2crypto
c2c$ sudo apt-get install libgcrypt11-dev
# Clone the repository
c2c$ git clone https://github.com/CTU-IIG/802.11p-crda.git
c2c$ cd 802.11p-crda
c2c/802.11p-crda$ git checkout its-g5_v1
# We are using our own key for regulatory.bin and CRDA
c2c/802.11p-crda$ cp /lib/crda/pubkeys/username.key.pub.pem pubkeys/
# Compile + install it
c2c/802.11p-crda$ make
c2c/802.11p-crda$ sudo PREFIX=/ REG_BIN=/lib/crda/regulatory.bin make install
# Test CRDA + generated regulatory.bin
c2c/802.11p-crda$ sudo /sbin/regdbdump ../802.11p-wireless-regdb/regulatory.bin | grep -i ocb
country 00: invalid
(5850.000 - 5925.000 @ 20.000), (20.00), NO-CCK, OCB-ONLY
# Right now is probably the right time reboot
# the computer into the newly compiled kernel
Configure OCB interface
=======================
sudo iw reg set DE
sudo ip link set wlan0 down
sudo iw dev wlan0 set type ocb
sudo ip link set wlan0 up
sudo iw dev wlan0 ocb join 5890 10MHZ
# Get the interface statistics
ip -s link show dev wlan0
@scateu
Copy link

scateu commented Feb 16, 2016

line 91, need to add REG_BIN=/lib/crda/regulatory.bin

c2c/802.11p-crda$ make REG_BIN=/lib/crda/regulatory.bin 

or it will cause error, though it doesn't do any harm to the whole process.

@abualhoul44
Copy link

Why I keep having this whever I try to make iw -- wifi configuration tool

/bin/sh: pkg-config: not found
/bin/sh: pkg-config: not found
/bin/sh: pkg-config: not found
/bin/sh: pkg-config: not found
/bin/sh: pkg-config: not found
Makefile:76: *** Cannot find development files for any supported version of libnl.  Stop.

@jfpastrana
Copy link

abualhoul44, you should install the package "pkg-config". Then you should install the libnl packages, however it depends of the version that you have installed, in my case I needed "libnl" and "libnl-devel".

@abualhoul44
Copy link

I have followed the procedure, Kernel updated, each build and make was smooth on apu2 box and Voyage 0.10. but when reboot to the new kernel, I have no more wireless card or eithernet.

@pepros
Copy link

pepros commented Jun 27, 2017

Hi,
Thank you very much for the detailed instruction.
I have the same problem as @apaixao when using ath5k (Unex DCMA-86P2 with Atheros AR5414A-B2B)
$iw dev wlan0 set type ocb
command failed: Operation not supported (-95)
Does anyone know how to resolve the problem? If it doesn't work on ath5k, can you suggest an alternative way to enable 802.11p on ath5k.
Thank you very much.

@Taknok
Copy link

Taknok commented Nov 18, 2017

Hi,
When I do $iw dev wlan0 set type ocb the operation is ok but at sudo ip link set wlan0 up I get RTNETLINK answers: Operation not supported
Does anyone know how to solve this ?
Thank

@abakabir
Copy link

Hi.
Could i follow this procedure on openwrt installed on a raspberry?
Thank you for your reply.

@saya7
Copy link

saya7 commented May 7, 2018

Hello,
what is the name of the board that you have used ?

@pengyuan-zhou
Copy link

Hi,
Anyone solved the old issue "iw dev wlan0 set type ocb command failed: Operation not supported (-95)" ?

@anasbinmuslim
Copy link

I am having the similar problem i.e. when i do ocb join at 5890Mhz, i get a "command failed: invalid argument (-22)" error. Anyone managed to solve this issue?

@runtime429
Copy link

Anyone get this working on Linux Kernel 5.x?

@runtime429
Copy link

Anyone get this working on Linux Kernel 5.x?

I did it. You just have to apply the changes from:

CTU-IIG/802.11p-linux@bf45e01

@a36233
Copy link

a36233 commented Jan 16, 2020

what about on kernel 5.4.x? Anyone has been able to put it working ?

@msarr11
Copy link

msarr11 commented Feb 10, 2020

Hello, has somebody tried to make it work on ath10k driver?
Thank you in advance.

@lpirl
Copy link

lpirl commented May 15, 2020

what about on kernel 5.4.x? Anyone has been able to put it working ?

This guide works for me © on Debian, with Linux 5.6 and ath9k.

If you want to patch Linux < 5.6, try the patches in this revision.

In the repository linked above, you can also find Ansible roles to set things up in an automated fashion.

Hello, has somebody tried to make it work on ath10k driver?

I have been just searching for this as well. Maybe (unlikely), I find the time to dig into ath10, but I'm really not into kernel development at all.

Also, It would be great if someone would drop a note here once he or she finds useful resources.

@lpirl
Copy link

lpirl commented May 22, 2020

Update: I just pushed the work in progress' status regarding patching ath10k for IEEE 802.11p. I am not a kernel dev, so if anyone with expertise wants to join in… :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment