You are not logged in.
I've recently replaced my wlan card from Intel 2230-N to Broadcom BCM43228. The card is working, but with a flaw, connection bitrate showing up as 0 kb/s. I am using i3status bar, and with the Intel 2230-N card it showed the wifi connection bitrate correctly. Is there a way to find where i3status bar gets this connection bitrate information? Or is this problem of wlan card? I am using broadcom-wl.
Thanks.
Offline
im not familiar with i3status but after a quick read of the man page i see that the wireless section of the config should look similar to this:
wireless wlan0 {
format_up = "W: (%quality at %essid, %bitrate) %ip"
format_down = "W: down"
}so you would need to make sure that "wlan0" is whatever your wireless card is, which can be found by running:
ip awhich in my case is "wlp3s0" but on another laptop in the house is "wlp8s0", so you need to make sure that is configured right.
hope that makes sense
Offline
im not familiar with i3status but after a quick read of the man page i see that the wireless section of the config should look similar to this:
wireless wlan0 { format_up = "W: (%quality at %essid, %bitrate) %ip" format_down = "W: down" }so you would need to make sure that "wlan0" is whatever your wireless card is, which can be found by running:
ip awhich in my case is "wlp3s0" but on another laptop in the house is "wlp8s0", so you need to make sure that is configured right.
hope that makes sense
Yes. I did check it and the device name is correct. Everything (SSID, quality, and IP address) BUT the bitrate are correctly shown. Do you think this could be a driver issue?
Offline
Please post the output of "ip a", your i3 config and
cat /sys/class/net/wlpredictablemyasslennart/statistics/?x_bytes for the NIC that shows up in "ip a" and your i3 config.
(Those values should increase w/ traffic and ar eiirc what i3 uses to interpolate the network speed)
Online
'ip a' output
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp9s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 08:9e:01:88:71:61 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 1c:3e:84:ef:25:2f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.16/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp3s0
valid_lft 86374sec preferred_lft 75574sec
inet6 fe80::1e3e:84ff:feef:252f/64 scope link
valid_lft forever preferred_lft foreveri3 config
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
#
# This config file uses keycodes (bindsym) and was written for the QWERTY
# layout.
#
# To get a config file with the same key positions, but for your current
# layout, use the i3-config-wizard
#
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Fixed Excelisor 12
default_border pixel
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $up l
set $down k
set $left j
set $right semicolon
# use Mouse+Mod1 to drag floating windows to their wanted position
floating_modifier Mod1
# start a terminal
bindsym Mod1+Return exec i3-sensible-terminal
# kill focused window
bindsym Mod1+Shift+q kill
bindsym Mod1+F4 kill
# start dmenu (a program launcher)
bindsym Mod1+d exec --no-startup-id dmenu_run -b -fn 'Fixed Excelsior-12'
# A more modern dmenu replacement is rofi:
# bindsym Mod1+d exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindsym Mod1+d exec --no-startup-id i3-dmenu-desktop
# change focus
bindsym Mod1+$left focus left
bindsym Mod1+$down focus down
bindsym Mod1+$up focus up
bindsym Mod1+$right focus right
# alternatively, you can use the cursor keys:
bindsym Mod1+Left focus left
bindsym Mod1+Down focus down
bindsym Mod1+Up focus up
bindsym Mod1+Right focus right
# move focused window
bindsym Mod1+Shift+$left move left
bindsym Mod1+Shift+$down move down
bindsym Mod1+Shift+$up move up
bindsym Mod1+Shift+$right move right
# alternatively, you can use the cursor keys:
bindsym Mod1+Shift+Left move left 25 px
bindsym Mod1+Shift+Down move down 25 px
bindsym Mod1+Shift+Up move up 25 px
bindsym Mod1+Shift+Right move right 25 px
# split in horizontal orientation
bindsym Mod1+h split h
# split in vertical orientation
bindsym Mod1+v split v
# enter fullscreen mode for the focused container
bindsym Mod1+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym Mod1+s layout stacking
bindsym Mod1+w layout tabbed
bindsym Mod1+e layout toggle split
# toggle tiling / floating
bindsym Mod1+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym Mod1+space focus mode_toggle
# focus the parent container
bindsym Mod1+a focus parent
# focus the child container
#bindsym Mod1+d focus child
# move the currently focused window to the scratchpad
bindsym Mod1+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym Mod1+minus scratchpad show
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym Mod1+1 workspace number $ws1
bindsym Mod1+2 workspace number $ws2
bindsym Mod1+3 workspace number $ws3
bindsym Mod1+4 workspace number $ws4
bindsym Mod1+5 workspace number $ws5
bindsym Mod1+6 workspace number $ws6
bindsym Mod1+7 workspace number $ws7
bindsym Mod1+8 workspace number $ws8
bindsym Mod1+9 workspace number $ws9
bindsym Mod1+0 workspace number $ws10
# move focused container to workspace
bindsym Mod1+Shift+1 move container to workspace number $ws1
bindsym Mod1+Shift+2 move container to workspace number $ws2
bindsym Mod1+Shift+3 move container to workspace number $ws3
bindsym Mod1+Shift+4 move container to workspace number $ws4
bindsym Mod1+Shift+5 move container to workspace number $ws5
bindsym Mod1+Shift+6 move container to workspace number $ws6
bindsym Mod1+Shift+7 move container to workspace number $ws7
bindsym Mod1+Shift+8 move container to workspace number $ws8
bindsym Mod1+Shift+9 move container to workspace number $ws9
bindsym Mod1+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym Mod1+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym Mod1+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym Mod1+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the window’s width.
# Pressing right will grow the window’s width.
# Pressing up will shrink the window’s height.
# Pressing down will grow the window’s height.
bindsym $left resize shrink width 5 px or 5 ppt
bindsym $down resize grow height 5 px or 5 ppt
bindsym $up resize shrink height 5 px or 5 ppt
bindsym $right resize grow width 5 px or 5 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 5 px or 5 ppt
bindsym Down resize grow height 5 px or 5 ppt
bindsym Up resize shrink height 5 px or 5 ppt
bindsym Right resize grow width 5 px or 5 ppt
# back to normal: Enter or Escape or Mod1+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Mod1+r mode "default"
}
bindsym Mod1+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
tray_output primary
}
#######################################################################
# automatically start i3-config-wizard to offer the user to create a
# keysym-based config which used their favorite modifier (alt or windows)
#
# i3-config-wizard will not launch if there already is a config file
# in ~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set) or
# ~/.i3/config.
#
# Please remove the following exec line:
#######################################################################
#exec i3-config-wizard
# Program launcher
bindsym Mod1+Control+i exec firefox
bindsym Mod1+Control+m exec aerc
# Volume control
bindsym Mod1+Control+minus exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
bindsym Mod1+Control+plus exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
bindsym Mod1+Control+0 exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
# Window float
for_window [class="MPlayer" instance="xv"] floating enable
for_window [class="Ncview"] floating enable
for_window [class="Signal"] floating enable
for_window [class="zoom"] floating enable
for_window [class="Matplotlib"] floating enable
for_window [class="Inkscape"] floating enable
for_window [class="Pavucontrol"] floating enable
for_window [class="Simple-scan"] floating enable
for_window [class="Virt-manager"] floating enableoutput of
cat /sys/class/net/wlp3s0/statistics/tx_bytes ->
259183 Offline
your i3 config and
ah, shit - i3status.conf …
Why's there no rx_bytes?
Online
Yeah, I was wondering if you were asking for i3status
general {
output_format = "i3bar"
colors = true
interval = 1
}
order += "wireless wlp3s0"
order += "battery 0"
order += "cpu_usage"
order += "memory"
order += "volume master"
order += "tztime local"
wireless wlp3s0 {
format_up = "%essid \ %quality \ %bitrate \ %ip "
format_down = "No Connection"
color_good = "#00FFFF"
color_bad = "#FF0000"
}
battery 0 {
format = " Batt %percentage "
format_down = "No Batt"
path = "/sys/class/power_supply/BAT1/uevent"
low_threshold = 20
color_bad = "#FF0000"
}
cpu_usage {
format = " CPU %usage "
}
memory {
format = " Mem %used/%total "
}
volume master {
format = " Vol %volume "
format_muted = "Muted"
device = "default"
mixer = "Master"
}
tztime local {
format = " %Y-%m-%d %H:%M:%S "
} cat /sys/class/net/wlp3s0/statistics/tx_bytes -> 307768
cat /sys/class/net/wlp3s0/statistics/rx_bytes -> 3625849
Last edited by redshoe (2022-01-04 16:27:53)
Offline
All good, but i3status actually queries the nl80211 interface and you're probably using a wext driver?
(Or if nl80211, it's indeed a bug in the wl driver)
https://github.com/i3/i3status/blob/mas … ess_info.c
…
static int get_wireless_info(const char *interface, wireless_info_t *info) {
memset(info, 0, sizeof(wireless_info_t));
#ifdef __linux__
struct nl_sock *sk = nl_socket_alloc();
if (genl_connect(sk) != 0)
goto error1;
if (nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, gwi_scan_cb, info) < 0)
goto error1;
const int nl80211_id = genl_ctrl_resolve(sk, "nl80211");
if (nl80211_id < 0)
goto error1;
const unsigned int ifidx = if_nametoindex(interface);
if (ifidx == 0)
goto error1;
struct nl_msg *msg = NULL;
if ((msg = nlmsg_alloc()) == NULL)
goto error1;
if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, nl80211_id, 0, NLM_F_DUMP, NL80211_CMD_GET_SCAN, 0) ||
nla_put_u32(msg, NL80211_ATTR_IFINDEX, ifidx) < 0)
goto error2;
if (nl_send_sync(sk, msg) < 0)
// nl_send_sync calls nlmsg_free()
goto error1;
msg = NULL;
if (nl_socket_modify_cb(sk, NL_CB_VALID, NL_CB_CUSTOM, gwi_sta_cb, info) < 0)
goto error1;
if ((msg = nlmsg_alloc()) == NULL)
goto error1;
if (!genlmsg_put(msg, NL_AUTO_PORT, NL_AUTO_SEQ, nl80211_id, 0, NLM_F_DUMP, NL80211_CMD_GET_STATION, 0) || nla_put_u32(msg, NL80211_ATTR_IFINDEX, ifidx) < 0 || nla_put(msg, NL80211_ATTR_MAC, 6, info->bssid) < 0)
goto error2;
if (nl_send_sync(sk, msg) < 0)
// nl_send_sync calls nlmsg_free()
goto error1;
msg = NULL;
nl_socket_free(sk);
return 1;
error2:
nlmsg_free(msg);
error1:
nl_socket_free(sk);
return 0;
#endif
…Online
Thanks. I have not specified which (nl80211 or wext) one to use in wpa_supplicant. Would it be worth it to try explicitly specifying it?
Offline
Yes, enforcing nl80211 will either
- fail (because it's wext only)
- make i3status work
- expose a bug in the driver
Online
Hmm... Forcing wpa_supplicant to use nl80211 does... nothing (connection works but still no bitrate). And even with wext driver, it works but still no bitrate. Weird. So, this could be a bug in the driver huh?
Offline
If
iw dev wlp3s0 infoagrees w/ i3status then yes, it's more likely in the driver.
Online
Well, with the BCM43228 card I get
Interface wlp3s0
ifindex 3
wdev 0x1
addr 1c:3e:84:ef:25:2f
ssid OogieBoogie
type managed
wiphy 0As you can see I do not get any channel and txpower info.
But with the Intel card (which works fine), I get
Interface wlp3s0
ifindex 2
wdev 0x1
addr 60:36:dd:7c:c8:ba
ssid OogieBoogie-2.4G
type managed
wiphy 0
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
txpower 16.00 dBmOffline
Now with a different driver "b43-firmware", I get something that I am supposed to get via 'iw dev wlp3s0 info'
Interface wlp3s0b1
ifindex 2
wdev 0x1
addr 1c:3e:84:ef:25:2f
ssid OogieBoogie
type managed
wiphy 0
channel 161 (5805 MHz), width: 20 MHz (no HT), center1: 5805 MHz
txpower 20.00 dBmBUT, now I am not getting any info on my i3status. Man, Broadcom cards are wonky as hell.
Offline
Well... I asked people over at broadcom-wl github, and they said there is nothing they can do since they are just packaging the drivers which is straight from the Broadcom. So, I guess I'll be using the card without any bitrate info. At least it works.
Last edited by redshoe (2022-01-04 18:23:35)
Offline