Batman mesh not working - batctl o doesn't work

Hi together,

I have some troubles with setting up a batman mesh. I tried several tutorials to setup the batman mesh but I can't see if it is working or not. The strange thing is I always get the same error message from batctl, when I'm typing batctl o:

root@ap-eg-buero:~# batctl o
Error - no valid command or debug table/JSON specified: o
Usage: batctl [options] command|debug table|debug json [parameters]
options:
 	-h print this help (or 'batctl <command|debug table|debug json> -h' for the parameter help)
 	-v print version

commands:
 	meshif <netdev> aggregation|ag             [0|1]             	display or modify aggregation setting
 	meshif <netdev> ap_isolation|ap            [0|1]             	display or modify ap_isolation setting
 	vlan <vdev> ap_isolation|ap                [0|1]             	display or modify ap_isolation setting for vlan device or id
 	meshif <netdev> vid <vid> ap_isolation|ap  [0|1]             	display or modify ap_isolation setting for vlan device or id
 	meshif <netdev> bonding|b                  [0|1]             	display or modify bonding setting
 	meshif <netdev> bridge_loop_avoidance|bl   [0|1]             	display or modify bridge_loop_avoidance setting
 	meshif <netdev> distributed_arp_table|dat  [0|1]             	display or modify distributed_arp_table setting
 	hardif <netdev> elp_interval|et            [interval]        	display or modify elp_interval setting
 	meshif <netdev> fragmentation|f            [0|1]             	display or modify fragmentation setting
 	meshif <netdev> gw_mode|gw                 [mode]            	display or modify the gateway mode
 	meshif <netdev> hop_penalty|hp             [penalty]         	display or modify hop_penalty setting
 	hardif <netdev> hop_penalty|hp             [penalty]         	display or modify hop_penalty setting
 	meshif <netdev> interface|if               [add|del iface(s)]	display or modify the interface settings
 	meshif <netdev> isolation_mark|mark        [mark]            	display or modify isolation_mark setting
 	meshif <netdev> loglevel|ll                [level]           	display or modify the log level
 	meshif <netdev> multicast_fanout|mo        [fanout]        	display or modify multicast_fanout setting
 	meshif <netdev> multicast_forceflood|mff   [0|1]             	display or modify multicast_forceflood setting
 	meshif <netdev> network_coding|nc          [0|1]             	display or modify network_coding setting
 	meshif <netdev> orig_interval|it           [interval]        	display or modify orig_interval setting
 	routing_algo|ra                            [mode]            	display or modify the routing algorithm
 	hardif <netdev> throughput_override|to     [mbit]        	display or modify throughput_override setting

debug tables:                                   	display the corresponding debug table

JSON queries:                                   	display results of netlink query as JSON

Any ideas what's going wrong on my side?
I'm using Cudy WR3000 V1 with additional packages kmod-batman-adv, luci-proto-batman-adv, wpad-mesh-wolfssl
I created a bat0 (Batman device), bat0_mesh (Batman interface) and created a jmomesh with network bat0_mesh over luci on all my mesh nodes. The jmomesh showing as connected on all nodes.

Best regards,
Michael

wolfssl?

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button (red circle; this works best in the 'Markdown' composer view in the blue oval):

Screenshot 2025-10-20 at 8.14.14 PM

Remember to redact passwords, VPN keys, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall
ubus call system board
{
	"kernel": "6.6.110",
	"hostname": "ap-eg-buero",
	"system": "ARMv8 Processor rev 4",
	"model": "Cudy WR3000 v1",
	"board_name": "cudy,wr3000-v1",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "24.10.4",
		"revision": "r28959-29397011cc",
		"target": "mediatek/filogic",
		"description": "OpenWrt 24.10.4 r28959-29397011cc",
		"builddate": "1760891865"
	}
}
-----------------------------------------------------------
cat /etc/config/network
config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdbb:bce6:c6e7::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'wan'

config interface 'lan'
	option device 'br-lan'
	option proto 'dhcp'

config interface 'bat0'
	option proto 'batadv'
	option routing_algo 'BATMAN_V'
	option bridge_loop_avoidance '1'
	option gw_mode 'off'
	option hop_penalty '30'

config interface 'bat0_mesh'
	option proto 'batadv_hardif'
	option master 'bat0
-----------------------------------------------------------
cat /etc/config/wireless
config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/soc/18000000.wifi'
	option band '2g'
	option channel '11'
	option htmode 'HE40'
	option country 'PL'
	option cell_density '0'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'jmobster'
	option encryption 'psk-mixed'
	option key 'obfuscated'
	option ieee80211r '1'
	option mobility_domain '0014'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option time_advertisement '2'
	option time_zone 'CET-1CEST,M3.5.0,M10.5.0/3'
	option wnm_sleep_mode '1'
	option wnm_sleep_mode_no_keys '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/soc/18000000.wifi+1'
	option band '5g'
	option channel '36'
	option htmode 'HE80'
	option country 'PL'
	option cell_density '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'jmobster'
	option encryption 'psk-mixed'
	option key 'obfuscated'
	option ieee80211r '1'
	option mobility_domain '0014'
	option ft_over_ds '0'
	option ft_psk_generate_local '1'
	option ieee80211k '1'
	option time_advertisement '2'
	option time_zone 'CET-1CEST,M3.5.0,M10.5.0/3'
	option wnm_sleep_mode '1'
	option wnm_sleep_mode_no_keys '1'

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'mesh'
	option encryption 'sae'
	option mesh_id 'jmomesh'
	option mesh_fwding '0'
	option mesh_rssi_threshold '0'
	option key 'obfuscated'
	option network 'bat0_mesh'
-----------------------------------------------------------
cat /etc/config/dhcp
config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option nonwildcard '1'
	option localservice '1'
	option ednspacket_max '1232'
	option filter_aaaa '0'
	option filter_a '0'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'
	option piofolder '/tmp/odhcpd-piofolder'
-----------------------------------------------------------
cat /etc/config/firewall
config defaults
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	option synflood_protect '1'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

Uff maybe start with a command which is available and valid?
A single o is no valid command as seen in the commands output....

That's the point. Normally this should be valid as you can read in the batman documentation. The interesting point is that the JSON tables are not filled anyways.

That's why I'm asking if anybody had a similiar phenomenon or ideas. It's not my first network to setup and for me as it looks like s.th. messed up maybe with the package compile or a wrong kernel setting.

For comparison reason how it should look like here is an excerpt from a Ubuntu proxmox VM (not active batman mesh):

root@batcave:~# batctl o
[B.A.T.M.A.N. adv 2024.0, MainIF/MAC: enp6s18/bc:24:11:62:c8:c5 (bat0/2a:7b:ff:ea:c0:1c BATMAN_IV)]
   Originator        last-seen (#/255) Nexthop           [outgoingIF]

And the help screen should look like this:

root@batcave:~# batctl
Error - no command specified
Usage: batctl [options] command|debug table|debug json [parameters]
options:
 	-h print this help (or 'batctl <command|debug table|debug json> -h' for the parameter help)
 	-v print version

commands:
 	meshif <netdev> aggregation|ag             [0|1]             	display or modify aggregation setting
 	meshif <netdev> ap_isolation|ap            [0|1]             	display or modify ap_isolation setting
 	vlan <vdev> ap_isolation|ap                [0|1]             	display or modify ap_isolation setting for vlan device or id
 	meshif <netdev> vid <vid> ap_isolation|ap  [0|1]             	display or modify ap_isolation setting for vlan device or id
 	bisect_iv                                  <file1> .. <fileN>	analyze given batman iv log files for routing stability
 	meshif <netdev> bonding|b                  [0|1]             	display or modify bonding setting
 	meshif <netdev> bridge_loop_avoidance|bl   [0|1]             	display or modify bridge_loop_avoidance setting
 	meshif <netdev> distributed_arp_table|dat  [0|1]             	display or modify distributed_arp_table setting
 	hardif <netdev> elp_interval|et            [interval]        	display or modify elp_interval setting
 	event|e                                                      	display events from batman-adv
 	meshif <netdev> fragmentation|f            [0|1]             	display or modify fragmentation setting
 	meshif <netdev> gw_mode|gw                 [mode]            	display or modify the gateway mode
 	meshif <netdev> hop_penalty|hp             [penalty]         	display or modify hop_penalty setting
 	hardif <netdev> hop_penalty|hp             [penalty]         	display or modify hop_penalty setting
 	meshif <netdev> interface|if               [add|del iface(s)]	display or modify the interface settings
 	meshif <netdev> isolation_mark|mark        [mark]            	display or modify isolation_mark setting
 	meshif <netdev> loglevel|ll                [level]           	display or modify the log level
 	meshif <netdev> multicast_fanout|mo        [fanout]        	display or modify multicast_fanout setting
 	meshif <netdev> multicast_forceflood|mff   [0|1]             	display or modify multicast_forceflood setting
 	meshif <netdev> network_coding|nc          [0|1]             	display or modify network_coding setting
 	meshif <netdev> orig_interval|it           [interval]        	display or modify orig_interval setting
 	meshif <netdev> ping|p                     <destination>     	ping another batman adv host via layer 2
 	routing_algo|ra                            [mode]            	display or modify the routing algorithm
 	meshif <netdev> statistics|s                                 	print mesh statistics
 	tcpdump|td                                 <interface>       	tcpdump layer 2 traffic on the given interface
 	hardif <netdev> throughput_override|to     [mbit]        	display or modify throughput_override setting
 	meshif <netdev> throughputmeter|tp         <destination>     	start a throughput measurement
 	meshif <netdev> traceroute|tr              <destination>     	traceroute another batman adv host via layer 2
 	meshif <netdev> translate|t                <destination>     	translate a destination to the originator responsible for it

debug tables:                                   	display the corresponding debug table
 	meshif <netdev> backbonetable|bbt          
 	meshif <netdev> claimtable|cl              
 	meshif <netdev> dat_cache|dc               
 	meshif <netdev> gateways|gwl               
 	meshif <netdev> mcast_flags|mf             
 	meshif <netdev> neighbors|n                
 	meshif <netdev> originators|o              
 	meshif <netdev> transglobal|tg             
 	meshif <netdev> translocal|tl              

JSON queries:                                   	display results of netlink query as JSON
 	meshif <netdev> bla_backbone_json|bbj      
 	meshif <netdev> bla_claim_json|clj         
 	meshif <netdev> dat_cache_json|dcj         
 	meshif <netdev> gateways_json|gwj          
 	hardif <netdev> hardif_json|hj             
 	meshif <netdev> hardifs_json|hj            
 	meshif <netdev> mcast_flags_json|mfj       
 	meshif <netdev> mesh_json|mj               
 	meshif <netdev> neighbors_json|nj          
 	meshif <netdev> originators_json|oj        
 	meshif <netdev> transtable_global_json|tgj 
 	meshif <netdev> transtable_local_json|tlj  
 	vlan <vdev> vlan_json|vj                   
 	meshif <netdev> vid <vid> vlan_json|vj     

As you can see the debug tables and the JSON queries are fully missing on OpenWRT :-/.

Sorry you are right.
Did you checked the dependencies of batctl?
I assume as long as the kmod is loaded and batctl is installed it should work as you has verified on an other system.

Yeah, that looks to me as if somehow batctl-default or any other variation didn’t get selected/installed correctly.

That's also my impression. What I have installed is

  • kmod-batman-adv (lsmod shows me also a loaded batman-adv)
  • batctl-tiny (<- maybe that's the issue...)

I will exchange that with batctl-full ;-).

Thank you a lot for your help!!! Trying now about 3 days around :slight_smile:

Yes of course :smiley:

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.