Damirados
VintageNet how to put interface into monitor mode
Hi I am trying to setup wfb-ng on my rpi0_2.
To get it working I need to put wifi interface into monitor mode.
I have managed to build custom driver for Wi-Fi card and get it working and showing up as wlan1.
iex(3)> ifconfig
lo: flags=[:up, :loopback, :running]
inet 127.0.0.1 netmask 255.0.0.0
inet ::1 netmask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
hwaddr 00:00:00:00:00:00
wlan0: flags=[:up, :broadcast, :running, :multicast]
inet 192.168.178.141 netmask 255.255.255.0 broadcast 192.168.178.255
inet 2a02:8108:96c0:5a77:e65f:1ff:fe45:e52 netmask ffff:ffff:ffff:ffff::
inet fe80::e65f:1ff:fe45:e52 netmask ffff:ffff:ffff:ffff::
hwaddr e4:5f:01:45:0e:52
wlan1: flags=[:broadcast, :multicast]
hwaddr 1c:a7:70:77:f2:76
Usual next steps are on standard linux systems is putting interface in unmanaged state. Currently iw on my nerves config says it’s managed.
iex(4)> cmd("iw dev wlan1 info")
Interface wlan1
ifindex 3
wdev 0x100000001
addr 1c:a7:70:77:f2:76
type managed
wiphy 1
txpower 18.00 dBm
I am using following VintageNet config:
config :vintage_net,
regulatory_domain: "DE",
config: [
{"usb0", %{type: VintageNetDirect}},
{"eth0",
%{
type: VintageNetEthernet,
ipv4: %{method: :dhcp}
}},
{"wlan0",
%{
type: VintageNetWiFi,
vintage_net_wifi: %{networks: [network]},
ipv4: %{method: :dhcp}
}},
{"wlan1", type: VintageNet.Technology.Null}
]
Next step would involve running following commands as root to set interface into monitor mode:
ip link set <interface> down
iw dev <interface> set monitor otherbss
ip link set <intreface up
I cannot run all of that commands. Reason might be that inferface is still managed or that I am not allowed because of some linux rules setup for the shell. They return following:
iex(9)> cmd("ip link set wlan1 up")
ip: SIOCSIFFLAGS: Operation not permitted
2
iex(10)> cmd("ip link set wlan1 down")
0
iex(11)> cmd("iw dev wlan1 set monitor otherbss")
command failed: Operation not permitted (-1)
255
iex(12)> cmd("ip link set wlan1 up")
ip: SIOCSIFFLAGS: Operation not permitted
2
iex(13)>
Marked As Solved
Damirados
Summary to complete the thread so it matches the title.
If you want to use wifi card that supports it in monitor mode:
- create custom nerves system
- if you need special driver add custom buildroot package, you will also need to enable usb and usb_net in kernel config
- add iw buildroot package
- make sure that your wifi card is properly powered otherwise buggy behavior is possible
I will link PR on my nerves system when I clean it up.
Also Liked
Damirados
PR that adds custom Wi-Fi driver
https://github.com/colibri-cam/nerves_system_rpi0_2_drone/pull/1/files
Damirados
It seems to be power. Rpi zero doesn’t provide enough power to the WiFi board over usb. Currently it doesn’t show up directly on boot, only after I unplug it and replug it, after that it everything seems to work normally and I am able to put into monitor mode using iw.
fhunleth
I’m a little late to this. I’m glad you got it working!
Just to clarify things if others stumble on this thread, VintageNet.Technology.Null does the same thing as not listing a network interface in your configuration. Sometimes it’s useful to be explicit that a network interface is not to be managed by VintageNet. Also, ChatGPT should have mentioned that you can limit what network interfaces wpa_supplicant will handle. VintageNet does that so if you have multiple WiFi network interfaces, there’s a wpa_supplicant instance for each one.
Amazingly, this power issue comes up periodically. I sure wish there were a better error message.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









