uoaerg / wavemon Goto Github PK
View Code? Open in Web Editor NEWwavemon is an ncurses-based monitoring application for wireless network devices on Linux.
License: GNU General Public License v3.0
wavemon is an ncurses-based monitoring application for wireless network devices on Linux.
License: GNU General Public License v3.0
Dear friends @ wavemon,
I work on project that requires signal levels with noise levels for datasets I am creating.
I tried to use > iw dev [interface_name] survey dump but command output returns nothing.
I also tried wavemon as possible solution but it seems to have problems when it comes to noise levels and s-n ratio:
The only noise related data I can find is written in /proc/net/wireless which I doubt is a valid value (always shows -256dBm).
So my question is - is there any way (with or without wavemon) to get signal noise values?
Thank you in advance!
Best,
Ante
Link quality and signal strength values aren't updated on a time basis with the following linux kernel versions:
kernel-4.0.4-201
kernel-4.0.4-202
While everything works just fine on the older one:
kernel-3.19.7-200
I'm using fedora 21, 64bit
You should update the version in about tab. Thanks for the great software.
New issue with wavemon display in terminal emulator (termite) as well as TTY. Have never had an issue displaying wavemon previously. Wavemon loads and displays text data, but the percentage bars showing network strength do not display properly; they show maybe one or two '=' signs along the bar, towards the right (i.e. 100%) side, but not along the rest of the bar.
ncurses = reinstalled,
wavemon = reinstalled,
multiple term. emulators have been tried.
Any advice? Thanks!
in wavemon.c do this for working Transparency
160 start_color();
161 use_default_colors();
162 init_pair(CP_STANDARD, COLOR_WHITE, -1);
163 init_pair(CP_SCALEHI, COLOR_RED, -1);
164 init_pair(CP_SCALEMID, COLOR_YELLOW, -1);
165 init_pair(CP_SCALELOW, COLOR_GREEN, -1);
166 init_pair(CP_WTITLE, COLOR_CYAN, -1);
167 init_pair(CP_INACTIVE, COLOR_CYAN, -1);
168 init_pair(CP_ACTIVE, COLOR_CYAN, COLOR_BLUE);
169
170 init_pair(CP_STATSIG, COLOR_GREEN, -1);
171 init_pair(CP_STATNOISE, COLOR_RED, -1);
172 init_pair(CP_STATSNR, COLOR_BLUE, COLOR_BLUE);
173 init_pair(CP_STATBKG, COLOR_BLUE, -1);
174 init_pair(CP_STATSIG_S, COLOR_GREEN, COLOR_BLUE);
175 init_pair(CP_STATNOISE_S, COLOR_RED, COLOR_BLUE);
176
177 init_pair(CP_PREF_NORMAL, COLOR_WHITE, -1);
178 init_pair(CP_PREF_SELECT, COLOR_WHITE, COLOR_BLUE);
179 init_pair(CP_PREF_ARROW, COLOR_RED, -1);
180
181 init_pair(CP_SCAN_CRYPT, COLOR_RED, -1);
182 init_pair(CP_SCAN_UNENC, COLOR_GREEN, -1);
183 init_pair(CP_SCAN_NON_AP, COLOR_YELLOW, -1);
Not sure if that's a bug but seems to happen here in Debian Stretch (4.9) and also Kali 2017.3 (4.14) using the latest version available from the respective repo's (0.8.0 Jan 2 2017) ... sometimes it will stay showing "no interface data" for long periods.
This seemed to start after taking screen shots with the default screenshot app (same in both) to compare driver performance.
Have already tried uninstalling and reinstalling in both but it's still the same.
Also can you please tell me what: ESS, % chan, Radio Measure and Spectrum Mgmt mean when they show up on the F3 scan page?
Great and very helpful app when it's working ... thanks for your time.
Hi
I have to laptops with a similar configuration (both Arch Linux on Kernel 4.11.9-1-ARCH). Wavemon works flawlessly on one but not the other. Difference is mostly the hardware not the software setup. The not working model uses an Intel Dual-Band Wireless AC8260 card (the working one an Intel 7265 card).
I use wavemon 0.8.1-1 and the dependencies are installed. The kernel module for the WiFi card used is iwlwifi. An iwlist <dev> scan
works flawlessly and also the WiFi works works fine. A sudo wavemon
shows "NO INTERFACE DATA" on the info screen and nothing for vor Lhist but a Scan of the networks works fine.
Any ideas why this is?
The variable sig_qual_max should be initialized as the following conditions may not be true.
if (linkstat.data.bss_signal_qual) {
/* BSS_SIGNAL_UNSPEC is scaled 0..100 */
sig_qual = linkstat.data.bss_signal_qual;
sig_qual_max = 100;
} else if (sig_level) {
if (sig_level < -110)
sig_qual = 0;
else if (sig_level > -40)
sig_qual = 70;
else
sig_qual = sig_level + 110;
sig_qual_max = 70;
}
there are some issues with github's "automatic tarball download"
thus i recommend to use another download site for release tarballs, for example sourceforge.net (git repo can still stay here of course)
Hi there,
I am working on a project with a Raspberry Pi. The wifi signal is normally pretty bad on a Raspberry Pi so I have bought a wifi range extender antenna like this one:
https://www.ebay.com/itm/600Mbps-Wireless-Internet-Signal-Booster-Wifi-Range-Extender-USB-Adapter-Antenna-/131857138867
However when I plug it into the USB the TX counter stops counting as much as without the USB extender - when monitoring the wifi with wavemon. It looks like this:
Any ideas why the USB extender stops the TX counter so much?
For slow RX/TX rate wavemon still reports rates as megabytes per second. Where it should be kilobytes instead.
The Hardware & Software are the same as in #20.
If I use wavemon under heavy UDP traffic it stops responding. UI does not update, Tx/Rx are not updated and it doesn't react to keys, only ctrl+C helps (kills it).
I have seen it a lot of times with github master (latest commit 62949b3, this is nl80211 version) and sometimes with wavemon 0.7.6-2 (wext based version).
The ssh sessions running wavemons are alive (I can kill "not responding" wavemons with ctrl+C).
I have seen it when running 2 wavemons simultanously. I can check if this happens with just single running.
I'm always getting a "Error establishing a database connection" from http://www.erg.abdn.ac.uk/ergcms/wavemon/.
tks for give me answers
CFLAGS="-O0 -g3" ./configure
...
make
gcc -O2 -Wall -pthread ...
well behaving autoconf users (more than 90%) generally drop the hardcoded -O2 CFLAGS when the user passes his own CFLAGS.
this seems to be the default behaviour.
after editing out the @
before the CC invocation in Makefile.in to see what is going on ( #26 ) :
$ CFLAGS=-fomit-frome-pointer LIBNL3_GENL_LIBS=-lnl_tiny LIBNL3_GENL_CFLAGS=-I/include/libnl-tiny ./configure
...
make
CC utils.c
cc -O2 -Wall -pthread -DPACKAGE_NAME=\"wavemon\" -DPACKAGE_TARNAME=\"wavemon-current\" -DPACKAGE_VERSION=\"0.8.0\" -DPACKAGE_STRING=\"wavemon\ 0.8.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"https://github.com/uoaerg/wavemon\" -DBUILD_DATE=\"Wed\ Nov\ 23\ 11:04:09\ WET\ 2016\" -DSTDC_HEADERS=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_NCURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_NET_IF_ARP_H=1 -DHAVE_NETINET_ETHER_H=1 -DHAVE_NET_ETHERNET_H=1 -DHAVE_PTHREAD_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_LINUX_IF_H=1 -DHAVE_LINUX_WIRELESS_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_LIBM=1 -DHAVE_LIBNCURSES=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_ETHER_NTOHOST=1 -c -o utils.o utils.c
as you can see, there is no -fomit-frame-pointer anywhere in the executed statement.
this is completely contrary to what is expected from autoconf-using sw.
the environment variables CFLAGS, CPPFLAGS and LDFLAGS should all be respected and override the default ones (for example -O2 -Wall
for CFLAGS).
I am reffering to github master (Latest commit 62949b3).
I think that I also needed for building: libncurses5-dev
I am certain that I also needed: pkg-config.
Without pkg-config at correct version wavemon configure complains with error message about libnl3 which is somewhat confusing (even though libnl3 is installed with the correct version)..
Maybe all of that is obvious from the configure output but it took me a while to figure out.
Kind regards!
btw - wavemon is great
I'm using an Intel 9260NGW in a Dell XPS 13 (9360) using Debian stretch.
Wavemon reports inconsistent values for signal level and link quality:
signal level is typically reported as 70/72dBm (yes, +70dBm) with a link quality stuck at 100%.
Note that on the same system, iwconfig report reasonable values:
wlp58s0 IEEE 802.11 ESSID:"xxx"
Mode:Managed Frequency:5.2 GHz Access Point: XX:XX:XX:XX:XX:XX
Bit Rate=48 Mb/s Tx-Power=22 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=46/70 Signal level=-64 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:389 Missed beacon:0
Note sure wether it is a bug in wavemon itself or a third party lib like libnl...
Thank you,
David
Hi @grrtrr,
Hardware: Edimax EW-7811Un (this is Realtek RTL8188CUS)
OS: Linux ev3dev 4.4.19-15-ev3dev-ev3
I belive that both RaspberryPi and ev3dev use 3rd party driver for this device (instead of upstream), so maybe it is not playing well with cfg80211. Some more info:
(I am aware that the github version uses nl80211 and the old one wext to read data from the kernel)
I am getting incosistent levels, both of link quality and signal level between wavemon versions.
E.g - signal level -45 dBm (0.03 uW) vs 20 dBm (100.00 mW) [new vs old version).
E.g. - link quality 93 (65/70) vs 100 (100/100)
I am running 2 versions simultuanusly in 2 ssh windows on a mobile robot.
Also iw reports the same value (-45 dBm).
In both versions values change in reasonable way (that is - as I am getting far away from the AP the link quality and signal level drops)
Running sudo gdb wavemon
then navigating to scan with F3
yields the following fault. This issue seems to only occur while I'm already connected to a network on the same interface.
Thread 3 "wavemon" received signal SIGSEGV, Segmentation fault
[Switching to Thread 0x7ffff6a27700 (LWP 18375)]
0x00007ffff701e430 in __lll_unlock_elision () from /usr/lib/libpthread.so.0
(gdb) bt
#0 0x00007ffff701e430 in __lll_unlock_elision () from /usr/lib/libpthread.so.0
#1 0x0000000000409560 in ?? ()
#2 0x00007ffff701208c in start_thread () from /usr/lib/libpthread.so.0
#3 0x00007ffff6d49e1f in clone () from /usr/lib/libc.so.6
Output of wavemon -v
& pacman -Q wavemon
wavemon 0.8.0
Distributed under the terms of the GPLv3.
wavemon 0.8.1-1
Output of uname -a
Linux mavsa 4.14.13-1-ARCH #1 SMP PREEMPT Wed Jan 10 11:14:50 UTC 2018 x86_64 GNU/Linux
I'm using the iwlwifi
drivers on a ThinkPad X1 Carbon 5th Edition.
I am running Kali 2 from a chromebook flip (ARMHF).
I have installed wavemon from both the kali repo and the git repository.
Both methods install/compile correctly, then when I run wavemon/wavemon -i wlan0 all I receive is:
no supported wireless interfaces found!
I have three separate ALFA cards that function fine with all the other tools I have tried (airodump-ng/kismet etc.) but for some reason wavemon doesn't detect them.
What is the best way to start debugging this issue?
Cheers,
Dave
Hello.
Maybe would be useful to show the public IP besides the local IP.
Greetings.
PS: Thanks for your time and code! π
It would be good to be able to run this tool in a reporting mode.
I.e. set it to run for 5 minutes, then produce a report with the average signal strength etc. for printing instead of the interactive ncurses visualization.
Hi
why Wavemon shows different valus of RSSI? i need ro know RSSI in varied distances of my access point.
i measure in indoor place. how i can trust to RSSI given by Wavemon?
is there any standard conditions for measuring by wavemon?
The program doesn't appear to get as far as parsing options at all in this case, and regardless of valid or invalid flags simply prints
wavemon: no supported wireless interfaces found!
and exits.
so basically there's no standard way to get verbose make output and see what commands are executed, for example to see if my CFLAGS ended up in the compile command or not.
$ LIBNL3_GENL_LIBS=-lnl_tiny LIBNL3_GENL_CFLAGS=-I/include/libnl-tiny ./configure --prefix= --disable-silent-rules
...
configure: WARNING: unrecognized options: --disable-silent-rules
$ make V=1
CC lhist_scr.c
In file included from lhist_scr.c:21:0:
iw_nl80211.h:4:29: fatal error: netlink/netlink.h: No such file or directory
compilation terminated.
make: *** [lhist_scr.o] Error 1
$ la /include/libnl-tiny/netlink/netlink.h
-rw-r--r-- 1 root root 2094 Oct 11 03:09 /include/libnl-tiny/netlink/netlink.h
I have cross-compiled wavemon for my ARMv5 board. After running it for ten to fifteen minutes all the free RAM is used and the system is not able to operate anymore. Watching the memory with the top tool I can see that every refresh the free RAM decreases more than 200kB. Stopping wavemon stops the reduction of the free RAM.
Dear
I'm trying to get SNR value for using in my projects. I've used Netlink library and I'm receiving cyclic values differently received by wavemon;
root@node01:~# ./nl80211_info
Interface: ap1 | signal: -42 dB | noise: -56 | txrate: 104.0 MBit/s
Interface: ap1 | signal: -43 dB | noise: -82 | txrate: 104.0 MBit/s
Interface: ap1 | signal: -44 dB | noise: 125 | txrate: 104.0 MBit/s
Interface: ap1 | signal: -44 dB | noise: 99 | txrate: 104.0 MBit/s
Interface: ap1 | signal: -43 dB | noise: 73 | txrate: 104.0 MBit/s
My question is, how can I get the noise value and signal value to calculate the SNR as Wavemon uses?
Regards,
For example:
wavemon --histogram
would start wavemon in the Level histogram (F2) screen.
Hello,
I wonder if it is possible for the scan view to be limited to the top 10 or top 20 most powerful access points ?
My environment has 55-75 APs in range, which are all seen by wavemon, but I wonder if I can limit that to the top 10 ?
Thank you.
Greetings.
I don't know exactly where my problem is.
Wavemon works great on my laptop's builtin 2GHz wifi card.
I just bought a 5GHz USB wifi adapter (Belkin N750), and wavemon can see
ra0 (UP RUNNING BROADCAST MULTICAST)
but no interface data, no RX/TX data, no data reported, either in 5GHz mode or in 2GHz mode.
Is there something I'm doing wrong or not doing right, to get wavemon to see my USB wifi adapter?
Thanks.
Hi,
nice utility, I use it regularly, thank you for making and maintaining wavemon.
Would it be possible to create a filter option for the scan window?
where you can select:
similar to:
https://play.google.com/store/apps/details?id=com.vrem.wifianalyzer
Since commit 4a160b1 wavemon uses on_exit()
, which is not portable and not available on the C libraries musl and uClibc. According to the Linux kernel man page : Portable application should avoid this function, and use the standard atexit(3) instead.
Currently in OpenWrt, ac_cv_lib_cap_cap_get_flag=no is set to avoid the libcap dependency. I don't know enough about autotools but I would like to request a "--without-libcap" configure parameter to avoid it as that seems to be a proper solution.
This is my guess. I only use wavemon occasionally when adjusting my wifi dongle so I can't be sure. Same behaviour on sudo privileges.
My box: Antergos xfce, wavemon 0.8.1-1, ncurses 6.0+20170902-1 (updated a week ago.)
It would be useful to have, instead of just:
RX: 11,484 (5.41 MiB), drop: 98
TX: 10,200 (1.82 MiB), retries: 748
But to also display:
RX: 11,484 (5.41 MiB), drop: 98 (0.8%)
TX: 10,200 (1.82 MiB), retries: 748 (7%)
Because I don't really care what the raw drop/retries number is, but what the percentage is in realtime is really helpful.
Hi,
I don't know if I am in the right section, because I just need an information and I am not reporting an issue. If not, I am sorry.
I just wanted to know from where are coming the statistics information. I ran ifconfig but the values are not exactly the same as in the wavemon windows. In the wavemon windows, I also have 1 dropped packet and 2 failed packets, and when I ran ifconfig, I have 0 dropped, or erronned packets.
For information, I am using waveform as a real-time wireless monitoring (which is very usefull) and I want to log data too. But it seems like what I log is incorrect.
If you have any answers.
Thanks for the reading.
Sincerely
Both wavemon (as well as iwconfig
) show only the first negotiated bitrate, not the current bitrate.
iw
on the other hand does show the correct bitrate. I assume this is due to Wext?
ββInfoβββββββββββββββββββββββββββββββββββββββ
βmode: Managed, access point: 12:34:56:78:9A:BC
βfreq: 2.412 GHz, channel: 1, bitrate: 150 Mbit/s
βpower mgt: on, tx-power: 20 dBm (100.00 mW)
βretry: short limit 7, rts/cts: 2347 B, frag: off
βencryption: off (no key set)
$ iw dev wlan0 link
Connected to 12:34:56:78:9A:BC (on wlan0)
SSID: Test
freq: 2412
RX: 693487 bytes (5845 packets)
TX: 1501 bytes (14 packets)
signal: -72 dBm
tx bitrate: 72.2 MBit/s MCS 7 short GI
bss flags: short-preamble short-slot-time
dtim period: 1
beacon int: 100
struct scan_entry *new = calloc(1, sizeof(*new));
is not de-allocated before new = calloc(1, sizeof(*new));
. The first allocation should be removed.
Current behavior:
When I start wavemon and then go to the Scan window (F3) and my interface is DOWN, wavemon will set the interface state to UP with the message: "Interface x is down - setting it up..."
When I leave wavemon, the interface stays UP. In other words, wavemon does not set the interface state to DOWN when I leave it.
Expected behavior:
I would expect wavemon to set the interface back to its original state when I leave it.
I'm using wavemon in Arch Linux, installed from the "community" official repository.
The current behavior cause me trouble because other software (e.g. netctl) expects the interface to be DOWN when I start them.
Today, as a workaround, a made a script to start wavemon that get the interface state before starting it and then when I quit wavemon, the script sets my interface back to its original state.
on info screen, Interface section says wlan1 (IEEE 802.11abgn, WPA/WPA2), however, Info section says encryption: off (no key set)
Hi there,
I just configured my raspi to display wavemon on the display after booting up - i am using the watterott-display http://www.watterott.com/de/RPi-Display - I know the display is too small, but it perfecly fits into a case built of an old nintendo gameboy ;-)
Is there a way to ignore specific essids? would be great if our 93*4=372 devices of our infrastructure would be supressed ;-)
Regards from Aachen,
Thomas
wavemon is great, but sometimes virtuoso-t uses quite a bit of CPU. I haven't yet been able to replicate this issue, but an option to change the polling rate may help.
wavemon itself uses 1.4% which doesn't sound like much unless you're on battery power.
Please check the origial report at https://bugzilla.redhat.com/show_bug.cgi?id=1062931
"Start 'wavemon', then press F3 to 'scan'. The screen shows 'waiting for scan data ...', then after a few seconds it shows 'Waiting for scan data on wlp0s2f1u2 ...'. It remains like that for ages - I left it for around 30 minutes, then stopped the program.
('wlp0s2f1u2' is my wireless device, so it detected that correctly.)"
hello, i've just managed to build wavemon with libnl-tiny instead of libnl3/libnl3_genl.
what we would need to do to support it officially is basically:
(configure.ac)
/IF/ PKG_CHECK_MODULES([LIBNLTINY], [libnl-tiny >= 2.0] /THEN/
[CFLAGS="$CFLAGS $LIBNLTINY_CFLAGS"],
[LIBS="$LIBS $LIBNLTINY_LIBS"],
/ELSE/
# standard libnl3 stuff here
# libnl3 with GeNetlink support - wavemon is tracking changes to iw
PKG_CHECK_MODULES([LIBNL3], [libnl-3.0 >= 3.2], [],
[CFLAGS="$CFLAGS $LIBNL3_CFLAGS"],
[AC_MSG_ERROR(need libnl >= 3.2)])
PKG_CHECK_MODULES([LIBNL3_GENL], [libnl-genl-3.0 >= 3.2],
[LIBS="$LIBS $LIBNL3_GENL_LIBS"],
[AC_MSG_ERROR(need libnl-genl >= 3.2)])
/ENDIF/
i've put some invented conditionals in here, for example /IF/
, /ELSE/
etc, since i dont grok autoconf syntax.
I am wondering how collected signal strength data can be exported into, say, a csv file for later analysis.
I am using a RasPi 2 running Raspbian Jessie with Pixel. My purpose in collecting and storing strength data is to create a 3D heat map of Wi-Fi signal strength for 2.4GHz.
The README.md states
Send bug reports, comments, and suggestions by opening an issue on github.
while in wavemon.1 I read
.SH "REPORTING BUGS"
Send bug reports and/or suggestions to Gerrit Renker [email protected].
5GHz support seems to be missing
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.