[GH-ISSUE #35] An error occurred. Please try again. | config not found for "null" #21

Closed
opened 2026-03-04 14:52:26 +03:00 by kerem · 3 comments
Owner

Originally created by @bmberni on GitHub (Jul 1, 2025).
Original GitHub issue: https://github.com/f00b4r0/uspot/issues/35

Describe the bug
When connected to the Guest network I'll get Captive Portal Error An error occurred. Please try again. This is on windows. On iOS I do not get a Popup from the Captive Portal.

To Reproduce
Steps to reproduce the behavior:

  1. Connect to Wifi which is part of interface "captive"
  2. the browser starts with 10.0.0.1/hotspot/?redir=..... (on windows)
  3. it displays Error An error occurred. Please try again.

Expected behavior
Getting the Click to Continue Site.

Configuration
Provide the output of:

  • opkg list-installed | grep uspot
uspot - 2025.01.20~644fd6f5-r1
uspot-www - 2025.01.20~644fd6f5-r1
uspotfilter - 2025.01.20~644fd6f5-r1
  • uci show uspot (replace passwords with XXXX as needed)
uspot.captive=uspot
uspot.captive.auth_mode='click-to-continue'
uspot.captive.idle_timeout='600'
uspot.captive.session_timeout='0'
uspot.captive.disconnect_delay='0'
uspot.captive.interface='captive'
uspot.captive.setname='uspot'
uspot.captive.debug='1'
  • uci show network
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.ula_prefix='fd78:e0cf:459b::/48'
network.globals.packet_steering='1'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0.1'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.55.1'
network.lan.netmask='255.255.255.0'
network.lan.delegate='0'
network.wwan=interface
network.wwan.proto='ncm'
network.wwan.device='/dev/ttyACM0'
network.wwan.pdptype='IP'
network.wwan.apn='netpublic'
network.wwan.pincode='XXXX'
network.wwan.ipv6='auto'
network.wwan.metric='10'
network.wwan.sourcefilter='0'
network.wwan.delegate='0'
network.wwan.delay='10'
network.@switch[0]=switch
network.@switch[0].name='switch0'
network.@switch[0].reset='1'
network.@switch[0].enable_vlan='1'
network.@switch_vlan[0]=switch_vlan
network.@switch_vlan[0].device='switch0'
network.@switch_vlan[0].vlan='1'
network.@switch_vlan[0].ports='0t 1 2 3'
network.@switch_vlan[0].vid='1'
network.@switch_vlan[1]=switch_vlan
network.@switch_vlan[1].device='switch0'
network.@switch_vlan[1].vlan='2'
network.@switch_vlan[1].ports='0t 5'
network.@switch_vlan[1].vid='7'
network.WAN=interface
network.WAN.proto='dhcp'
network.WAN.device='eth0.7'
network.WAN.metric='9'
network.wg0=interface
network.wg0.proto='wireguard'
network.wg0.private_key='XXXX'
network.wg0.listen_port='51820'
network.wg0.addresses='172.16.14.90/30'
network.wg0.mtu='1392'
network.wg0.nohostroute='1'
network.@wireguard_wg0[0]=wireguard_wg0
network.@wireguard_wg0[0].public_key='XXXX'
network.@wireguard_wg0[0].endpoint_host='XXXX'
network.@wireguard_wg0[0].endpoint_port='51820'
network.@wireguard_wg0[0].persistent_keepalive='25'
network.@wireguard_wg0[0].allowed_ips='0.0.0.0/0'
network.captive=interface
network.captive.proto='static'
network.captive.ipaddr='10.0.0.1'
network.captive.netmask='255.255.252.0'
  • uci show firewall
firewall.@defaults[0]=defaults
firewall.@defaults[0].input='REJECT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].forward='REJECT'
firewall.@defaults[0].synflood_protect='1'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].log='1'
firewall.@zone[0].log_limit='100/minute'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].input='REJECT'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].forward='REJECT'
firewall.@zone[1].masq='1'
firewall.@zone[1].mtu_fix='1'
firewall.@zone[1].log='1'
firewall.@zone[1].log_limit='10/second'
firewall.@zone[1].network='WAN' 'wwan'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='wan'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
firewall.@rule[9]=rule
firewall.@rule[9].src='wan'
firewall.@rule[9].name='Allow-SSH-WAN'
firewall.@rule[9].proto='tcp'
firewall.@rule[9].dest_port='22'
firewall.@rule[9].target='ACCEPT'
firewall.@rule[10]=rule
firewall.@rule[10].src='wan'
firewall.@rule[10].name='Allow-HTTP-WAN'
firewall.@rule[10].proto='tcp'
firewall.@rule[10].dest_port='80'
firewall.@rule[10].target='ACCEPT'
firewall.@rule[11]=rule
firewall.@rule[11].src='lan'
firewall.@rule[11].dest='wan'
firewall.@rule[11].proto='all'
firewall.@rule[11].dest_ip='10.30.1.10'
firewall.@rule[11].target='ACCEPT'
firewall.@zone[2]=zone
firewall.@zone[2].name='ipsec'
firewall.@zone[2].input='REJECT'
firewall.@zone[2].output='ACCEPT'
firewall.@zone[2].forward='REJECT'
firewall.@zone[3]=zone
firewall.@zone[3].name='VPN'
firewall.@zone[3].input='REJECT'
firewall.@zone[3].output='ACCEPT'
firewall.@zone[3].forward='REJECT'
firewall.@zone[3].masq='1'
firewall.@zone[3].mtu_fix='1'
firewall.@zone[3].log='1'
firewall.@zone[3].log_limit='100/minute'
firewall.@zone[3].network='wg0'
firewall.@rule[12]=rule
firewall.@rule[12].src='wan'
firewall.@rule[12].name='Allow-WireGuard-In'
firewall.@rule[12].proto='udp'
firewall.@rule[12].dest_port='51820'
firewall.@rule[12].target='ACCEPT'
firewall.@rule[13]=rule
firewall.@rule[13].src='VPN'
firewall.@rule[13].name='Allow-WireGuard-Traffic'
firewall.@rule[13].target='ACCEPT'
firewall.@rule[13].proto='all'
firewall.@rule[14]=rule
firewall.@rule[14].src='VPN'
firewall.@rule[14].name='Allow-WireGuard-Traffic'
firewall.@rule[14].target='ACCEPT'
firewall.@rule[14].dest='*'
firewall.@rule[14].proto='all'
firewall.@forwarding[1]=forwarding
firewall.@forwarding[1].src='VPN'
firewall.@forwarding[1].dest='lan'
firewall.@forwarding[2]=forwarding
firewall.@forwarding[2].src='lan'
firewall.@forwarding[2].dest='VPN'
firewall.@zone[4]=zone
firewall.@zone[4].name='captive'
firewall.@zone[4].input='REJECT'
firewall.@zone[4].output='ACCEPT'
firewall.@zone[4].forward='REJECT'
firewall.@zone[4].network='captive'
firewall.@redirect[0]=redirect
firewall.@redirect[0].name='Redirect-unauth-captive-CPD'
firewall.@redirect[0].src='captive'
firewall.@redirect[0].src_dport='80'
firewall.@redirect[0].proto='tcp'
firewall.@redirect[0].target='DNAT'
firewall.@redirect[0].reflection='0'
firewall.@redirect[0].ipset='!uspot'
firewall.@rule[15]=rule
firewall.@rule[15].name='Allow-DHCP-NTP-captive'
firewall.@rule[15].src='captive'
firewall.@rule[15].proto='udp'
firewall.@rule[15].dest_port='67 123'
firewall.@rule[15].target='ACCEPT'
firewall.@rule[16]=rule
firewall.@rule[16].name='Restrict-input-captive'
firewall.@rule[16].src='captive'
firewall.@rule[16].dest_ip='!captive'
firewall.@rule[16].target='DROP'
firewall.@rule[17]=rule
firewall.@rule[17].name='Allow-captive-CPD-WEB-UAM'
firewall.@rule[17].src='captive'
firewall.@rule[17].dest_port='80 443 3990'
firewall.@rule[17].proto='tcp'
firewall.@rule[17].target='ACCEPT'
firewall.@rule[18]=rule
firewall.@rule[18].name='Forward-auth-captive'
firewall.@rule[18].src='captive'
firewall.@rule[18].dest='wan'
firewall.@rule[18].proto='any'
firewall.@rule[18].target='ACCEPT'
firewall.@rule[18].ipset='uspot'
firewall.@rule[19]=rule
firewall.@rule[19].name='Allow-DNS-captive'
firewall.@rule[19].src='captive'
firewall.@rule[19].proto='udp' 'tcp'
firewall.@rule[19].dest_port='53'
firewall.@rule[19].target='ACCEPT'
firewall.@ipset[0]=ipset
firewall.@ipset[0].name='uspot'
firewall.@ipset[0].match='src_mac'
firewall.@rule[20]=rule
firewall.@rule[20].name='Allow-Whitelist'
firewall.@rule[20].src='captive'
firewall.@rule[20].dest='wan'
firewall.@rule[20].proto='any'
firewall.@rule[20].ipset='wlist'
firewall.@rule[20].target='ACCEPT'
firewall.@ipset[1]=ipset
firewall.@ipset[1].name='wlist'
firewall.@ipset[1].match='dest_ip'
firewall.@ipset[1].entry='10.30.120.11'
  • uci show uhttpd
uhttpd.main=uhttpd
uhttpd.main.listen_https='0.0.0.0:8443'
uhttpd.main.redirect_https='0'
uhttpd.main.home='/www'
uhttpd.main.rfc1918_filter='1'
uhttpd.main.max_requests='3'
uhttpd.main.max_connections='100'
uhttpd.main.cert='/etc/uhttpd.crt'
uhttpd.main.key='/etc/uhttpd.key'
uhttpd.main.cgi_prefix='/cgi-bin'
uhttpd.main.lua_prefix='/cgi-bin/luci=/usr/lib/lua/luci/sgi/uhttpd.lua'
uhttpd.main.script_timeout='60'
uhttpd.main.network_timeout='30'
uhttpd.main.http_keepalive='20'
uhttpd.main.tcp_keepalive='1'
uhttpd.main.ubus_prefix='/ubus'
uhttpd.main.listen_http='0.0.0.0:8080'
uhttpd.defaults=cert
uhttpd.defaults.days='397'
uhttpd.defaults.key_type='ec'
uhttpd.defaults.bits='2048'
uhttpd.defaults.ec_curve='P-256'
uhttpd.defaults.country='ZZ'
uhttpd.defaults.state='Somewhere'
uhttpd.defaults.location='Unknown'
uhttpd.defaults.commonname='OpenWrt'
uhttpd.uspot=uhttpd
uhttpd.uspot.listen_http='10.0.0.1:80'
uhttpd.uspot.redirect_https='0'
uhttpd.uspot.max_requests='5'
uhttpd.uspot.no_dirlists='1'
uhttpd.uspot.home='/www-uspot'
uhttpd.uspot.ucode_prefix='/hotspot=/usr/share/uspot/handler.uc' '/cpd=/usr/share/uspot/handler-cpd.uc' '/api=/usr/share/uspot/handler-api.uc'
uhttpd.uspot.error_page='/cpd'
  • uci show dhcp
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].cachesize='1000'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto'
dhcp.@dnsmasq[0].localservice='1'
dhcp.@dnsmasq[0].ednspacket_max='1232'
dhcp.@dnsmasq[0].interface='captive' 'lan'
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.start='100'
dhcp.lan.limit='150'
dhcp.lan.leasetime='12h'
dhcp.lan.dhcpv4='server'
dhcp.lan.force='1'
dhcp.odhcpd=odhcpd
dhcp.odhcpd.maindhcp='0'
dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd'
dhcp.odhcpd.leasetrigger='/usr/sbin/odhcpd-update'
dhcp.odhcpd.loglevel='4'
dhcp.captive=dhcp
dhcp.captive.interface='captive'
dhcp.captive.start='2'
dhcp.captive.limit='1000'
dhcp.captive.leasetime='2h'
dhcp.captive.dhcp_option='114,https://captive.example.org/api'
dhcp.captive.dhcp_option_force='42,10.0.0.1'
dhcp.@domain[0]=domain
dhcp.@domain[0].name='captive.example.org'
dhcp.@domain[0].ip='10.0.0.1'
dhcp.@ipset[0]=ipset
dhcp.@ipset[0].name='wlist'
dhcp.@ipset[0].domain='www.telekom.de'
dhcp.@ipset[0].table_family='inet'

Logs

root@OpenWrt:~# logread -e uspot
Tue Jul  1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive"
Tue Jul  1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:30 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"
Tue Jul  1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null"

Additional context
The Version of OpenWRT is 24.10.1

Originally created by @bmberni on GitHub (Jul 1, 2025). Original GitHub issue: https://github.com/f00b4r0/uspot/issues/35 **Describe the bug** When connected to the Guest network I'll get Captive Portal Error An error occurred. Please try again. This is on windows. On iOS I do not get a Popup from the Captive Portal. **To Reproduce** Steps to reproduce the behavior: 1. Connect to Wifi which is part of interface "captive" 2. the browser starts with 10.0.0.1/hotspot/?redir=..... (on windows) 3. it displays Error An error occurred. Please try again. **Expected behavior** Getting the Click to Continue Site. **Configuration** Provide the output of: - `opkg list-installed | grep uspot` ``` uspot - 2025.01.20~644fd6f5-r1 uspot-www - 2025.01.20~644fd6f5-r1 uspotfilter - 2025.01.20~644fd6f5-r1 ``` - `uci show uspot` (replace passwords with XXXX as needed) ``` uspot.captive=uspot uspot.captive.auth_mode='click-to-continue' uspot.captive.idle_timeout='600' uspot.captive.session_timeout='0' uspot.captive.disconnect_delay='0' uspot.captive.interface='captive' uspot.captive.setname='uspot' uspot.captive.debug='1' ``` - `uci show network` ``` network.loopback=interface network.loopback.device='lo' network.loopback.proto='static' network.loopback.ipaddr='127.0.0.1' network.loopback.netmask='255.0.0.0' network.globals=globals network.globals.ula_prefix='fd78:e0cf:459b::/48' network.globals.packet_steering='1' network.@device[0]=device network.@device[0].name='br-lan' network.@device[0].type='bridge' network.@device[0].ports='eth0.1' network.lan=interface network.lan.device='br-lan' network.lan.proto='static' network.lan.ipaddr='192.168.55.1' network.lan.netmask='255.255.255.0' network.lan.delegate='0' network.wwan=interface network.wwan.proto='ncm' network.wwan.device='/dev/ttyACM0' network.wwan.pdptype='IP' network.wwan.apn='netpublic' network.wwan.pincode='XXXX' network.wwan.ipv6='auto' network.wwan.metric='10' network.wwan.sourcefilter='0' network.wwan.delegate='0' network.wwan.delay='10' network.@switch[0]=switch network.@switch[0].name='switch0' network.@switch[0].reset='1' network.@switch[0].enable_vlan='1' network.@switch_vlan[0]=switch_vlan network.@switch_vlan[0].device='switch0' network.@switch_vlan[0].vlan='1' network.@switch_vlan[0].ports='0t 1 2 3' network.@switch_vlan[0].vid='1' network.@switch_vlan[1]=switch_vlan network.@switch_vlan[1].device='switch0' network.@switch_vlan[1].vlan='2' network.@switch_vlan[1].ports='0t 5' network.@switch_vlan[1].vid='7' network.WAN=interface network.WAN.proto='dhcp' network.WAN.device='eth0.7' network.WAN.metric='9' network.wg0=interface network.wg0.proto='wireguard' network.wg0.private_key='XXXX' network.wg0.listen_port='51820' network.wg0.addresses='172.16.14.90/30' network.wg0.mtu='1392' network.wg0.nohostroute='1' network.@wireguard_wg0[0]=wireguard_wg0 network.@wireguard_wg0[0].public_key='XXXX' network.@wireguard_wg0[0].endpoint_host='XXXX' network.@wireguard_wg0[0].endpoint_port='51820' network.@wireguard_wg0[0].persistent_keepalive='25' network.@wireguard_wg0[0].allowed_ips='0.0.0.0/0' network.captive=interface network.captive.proto='static' network.captive.ipaddr='10.0.0.1' network.captive.netmask='255.255.252.0' ``` - `uci show firewall` ``` firewall.@defaults[0]=defaults firewall.@defaults[0].input='REJECT' firewall.@defaults[0].output='ACCEPT' firewall.@defaults[0].forward='REJECT' firewall.@defaults[0].synflood_protect='1' firewall.@zone[0]=zone firewall.@zone[0].name='lan' firewall.@zone[0].input='ACCEPT' firewall.@zone[0].output='ACCEPT' firewall.@zone[0].forward='ACCEPT' firewall.@zone[0].log='1' firewall.@zone[0].log_limit='100/minute' firewall.@zone[0].network='lan' firewall.@zone[1]=zone firewall.@zone[1].name='wan' firewall.@zone[1].input='REJECT' firewall.@zone[1].output='ACCEPT' firewall.@zone[1].forward='REJECT' firewall.@zone[1].masq='1' firewall.@zone[1].mtu_fix='1' firewall.@zone[1].log='1' firewall.@zone[1].log_limit='10/second' firewall.@zone[1].network='WAN' 'wwan' firewall.@forwarding[0]=forwarding firewall.@forwarding[0].src='lan' firewall.@forwarding[0].dest='wan' firewall.@rule[0]=rule firewall.@rule[0].name='Allow-DHCP-Renew' firewall.@rule[0].src='wan' firewall.@rule[0].proto='udp' firewall.@rule[0].dest_port='68' firewall.@rule[0].target='ACCEPT' firewall.@rule[0].family='ipv4' firewall.@rule[1]=rule firewall.@rule[1].name='Allow-Ping' firewall.@rule[1].src='wan' firewall.@rule[1].proto='icmp' firewall.@rule[1].icmp_type='echo-request' firewall.@rule[1].family='ipv4' firewall.@rule[1].target='ACCEPT' firewall.@rule[2]=rule firewall.@rule[2].name='Allow-IGMP' firewall.@rule[2].src='wan' firewall.@rule[2].proto='igmp' firewall.@rule[2].family='ipv4' firewall.@rule[2].target='ACCEPT' firewall.@rule[3]=rule firewall.@rule[3].name='Allow-DHCPv6' firewall.@rule[3].src='wan' firewall.@rule[3].proto='udp' firewall.@rule[3].dest_port='546' firewall.@rule[3].family='ipv6' firewall.@rule[3].target='ACCEPT' firewall.@rule[4]=rule firewall.@rule[4].name='Allow-MLD' firewall.@rule[4].src='wan' firewall.@rule[4].proto='icmp' firewall.@rule[4].src_ip='fe80::/10' firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0' firewall.@rule[4].family='ipv6' firewall.@rule[4].target='ACCEPT' firewall.@rule[5]=rule firewall.@rule[5].name='Allow-ICMPv6-Input' firewall.@rule[5].src='wan' firewall.@rule[5].proto='icmp' firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement' firewall.@rule[5].limit='1000/sec' firewall.@rule[5].family='ipv6' firewall.@rule[5].target='ACCEPT' firewall.@rule[6]=rule firewall.@rule[6].name='Allow-ICMPv6-Forward' firewall.@rule[6].src='wan' firewall.@rule[6].dest='*' firewall.@rule[6].proto='icmp' firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' firewall.@rule[6].limit='1000/sec' firewall.@rule[6].family='ipv6' firewall.@rule[6].target='ACCEPT' firewall.@rule[7]=rule firewall.@rule[7].name='Allow-IPSec-ESP' firewall.@rule[7].src='wan' firewall.@rule[7].dest='lan' firewall.@rule[7].proto='esp' firewall.@rule[7].target='ACCEPT' firewall.@rule[8]=rule firewall.@rule[8].name='Allow-ISAKMP' firewall.@rule[8].src='wan' firewall.@rule[8].dest='lan' firewall.@rule[8].dest_port='500' firewall.@rule[8].proto='udp' firewall.@rule[8].target='ACCEPT' firewall.@rule[9]=rule firewall.@rule[9].src='wan' firewall.@rule[9].name='Allow-SSH-WAN' firewall.@rule[9].proto='tcp' firewall.@rule[9].dest_port='22' firewall.@rule[9].target='ACCEPT' firewall.@rule[10]=rule firewall.@rule[10].src='wan' firewall.@rule[10].name='Allow-HTTP-WAN' firewall.@rule[10].proto='tcp' firewall.@rule[10].dest_port='80' firewall.@rule[10].target='ACCEPT' firewall.@rule[11]=rule firewall.@rule[11].src='lan' firewall.@rule[11].dest='wan' firewall.@rule[11].proto='all' firewall.@rule[11].dest_ip='10.30.1.10' firewall.@rule[11].target='ACCEPT' firewall.@zone[2]=zone firewall.@zone[2].name='ipsec' firewall.@zone[2].input='REJECT' firewall.@zone[2].output='ACCEPT' firewall.@zone[2].forward='REJECT' firewall.@zone[3]=zone firewall.@zone[3].name='VPN' firewall.@zone[3].input='REJECT' firewall.@zone[3].output='ACCEPT' firewall.@zone[3].forward='REJECT' firewall.@zone[3].masq='1' firewall.@zone[3].mtu_fix='1' firewall.@zone[3].log='1' firewall.@zone[3].log_limit='100/minute' firewall.@zone[3].network='wg0' firewall.@rule[12]=rule firewall.@rule[12].src='wan' firewall.@rule[12].name='Allow-WireGuard-In' firewall.@rule[12].proto='udp' firewall.@rule[12].dest_port='51820' firewall.@rule[12].target='ACCEPT' firewall.@rule[13]=rule firewall.@rule[13].src='VPN' firewall.@rule[13].name='Allow-WireGuard-Traffic' firewall.@rule[13].target='ACCEPT' firewall.@rule[13].proto='all' firewall.@rule[14]=rule firewall.@rule[14].src='VPN' firewall.@rule[14].name='Allow-WireGuard-Traffic' firewall.@rule[14].target='ACCEPT' firewall.@rule[14].dest='*' firewall.@rule[14].proto='all' firewall.@forwarding[1]=forwarding firewall.@forwarding[1].src='VPN' firewall.@forwarding[1].dest='lan' firewall.@forwarding[2]=forwarding firewall.@forwarding[2].src='lan' firewall.@forwarding[2].dest='VPN' firewall.@zone[4]=zone firewall.@zone[4].name='captive' firewall.@zone[4].input='REJECT' firewall.@zone[4].output='ACCEPT' firewall.@zone[4].forward='REJECT' firewall.@zone[4].network='captive' firewall.@redirect[0]=redirect firewall.@redirect[0].name='Redirect-unauth-captive-CPD' firewall.@redirect[0].src='captive' firewall.@redirect[0].src_dport='80' firewall.@redirect[0].proto='tcp' firewall.@redirect[0].target='DNAT' firewall.@redirect[0].reflection='0' firewall.@redirect[0].ipset='!uspot' firewall.@rule[15]=rule firewall.@rule[15].name='Allow-DHCP-NTP-captive' firewall.@rule[15].src='captive' firewall.@rule[15].proto='udp' firewall.@rule[15].dest_port='67 123' firewall.@rule[15].target='ACCEPT' firewall.@rule[16]=rule firewall.@rule[16].name='Restrict-input-captive' firewall.@rule[16].src='captive' firewall.@rule[16].dest_ip='!captive' firewall.@rule[16].target='DROP' firewall.@rule[17]=rule firewall.@rule[17].name='Allow-captive-CPD-WEB-UAM' firewall.@rule[17].src='captive' firewall.@rule[17].dest_port='80 443 3990' firewall.@rule[17].proto='tcp' firewall.@rule[17].target='ACCEPT' firewall.@rule[18]=rule firewall.@rule[18].name='Forward-auth-captive' firewall.@rule[18].src='captive' firewall.@rule[18].dest='wan' firewall.@rule[18].proto='any' firewall.@rule[18].target='ACCEPT' firewall.@rule[18].ipset='uspot' firewall.@rule[19]=rule firewall.@rule[19].name='Allow-DNS-captive' firewall.@rule[19].src='captive' firewall.@rule[19].proto='udp' 'tcp' firewall.@rule[19].dest_port='53' firewall.@rule[19].target='ACCEPT' firewall.@ipset[0]=ipset firewall.@ipset[0].name='uspot' firewall.@ipset[0].match='src_mac' firewall.@rule[20]=rule firewall.@rule[20].name='Allow-Whitelist' firewall.@rule[20].src='captive' firewall.@rule[20].dest='wan' firewall.@rule[20].proto='any' firewall.@rule[20].ipset='wlist' firewall.@rule[20].target='ACCEPT' firewall.@ipset[1]=ipset firewall.@ipset[1].name='wlist' firewall.@ipset[1].match='dest_ip' firewall.@ipset[1].entry='10.30.120.11' ``` - `uci show uhttpd` ``` uhttpd.main=uhttpd uhttpd.main.listen_https='0.0.0.0:8443' uhttpd.main.redirect_https='0' uhttpd.main.home='/www' uhttpd.main.rfc1918_filter='1' uhttpd.main.max_requests='3' uhttpd.main.max_connections='100' uhttpd.main.cert='/etc/uhttpd.crt' uhttpd.main.key='/etc/uhttpd.key' uhttpd.main.cgi_prefix='/cgi-bin' uhttpd.main.lua_prefix='/cgi-bin/luci=/usr/lib/lua/luci/sgi/uhttpd.lua' uhttpd.main.script_timeout='60' uhttpd.main.network_timeout='30' uhttpd.main.http_keepalive='20' uhttpd.main.tcp_keepalive='1' uhttpd.main.ubus_prefix='/ubus' uhttpd.main.listen_http='0.0.0.0:8080' uhttpd.defaults=cert uhttpd.defaults.days='397' uhttpd.defaults.key_type='ec' uhttpd.defaults.bits='2048' uhttpd.defaults.ec_curve='P-256' uhttpd.defaults.country='ZZ' uhttpd.defaults.state='Somewhere' uhttpd.defaults.location='Unknown' uhttpd.defaults.commonname='OpenWrt' uhttpd.uspot=uhttpd uhttpd.uspot.listen_http='10.0.0.1:80' uhttpd.uspot.redirect_https='0' uhttpd.uspot.max_requests='5' uhttpd.uspot.no_dirlists='1' uhttpd.uspot.home='/www-uspot' uhttpd.uspot.ucode_prefix='/hotspot=/usr/share/uspot/handler.uc' '/cpd=/usr/share/uspot/handler-cpd.uc' '/api=/usr/share/uspot/handler-api.uc' uhttpd.uspot.error_page='/cpd' ``` - `uci show dhcp` ``` dhcp.@dnsmasq[0]=dnsmasq dhcp.@dnsmasq[0].domainneeded='1' dhcp.@dnsmasq[0].localise_queries='1' dhcp.@dnsmasq[0].rebind_protection='1' dhcp.@dnsmasq[0].rebind_localhost='1' dhcp.@dnsmasq[0].local='/lan/' dhcp.@dnsmasq[0].domain='lan' dhcp.@dnsmasq[0].expandhosts='1' dhcp.@dnsmasq[0].cachesize='1000' dhcp.@dnsmasq[0].authoritative='1' dhcp.@dnsmasq[0].readethers='1' dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases' dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto' dhcp.@dnsmasq[0].localservice='1' dhcp.@dnsmasq[0].ednspacket_max='1232' dhcp.@dnsmasq[0].interface='captive' 'lan' dhcp.lan=dhcp dhcp.lan.interface='lan' dhcp.lan.start='100' dhcp.lan.limit='150' dhcp.lan.leasetime='12h' dhcp.lan.dhcpv4='server' dhcp.lan.force='1' dhcp.odhcpd=odhcpd dhcp.odhcpd.maindhcp='0' dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd' dhcp.odhcpd.leasetrigger='/usr/sbin/odhcpd-update' dhcp.odhcpd.loglevel='4' dhcp.captive=dhcp dhcp.captive.interface='captive' dhcp.captive.start='2' dhcp.captive.limit='1000' dhcp.captive.leasetime='2h' dhcp.captive.dhcp_option='114,https://captive.example.org/api' dhcp.captive.dhcp_option_force='42,10.0.0.1' dhcp.@domain[0]=domain dhcp.@domain[0].name='captive.example.org' dhcp.@domain[0].ip='10.0.0.1' dhcp.@ipset[0]=ipset dhcp.@ipset[0].name='wlist' dhcp.@ipset[0].domain='www.telekom.de' dhcp.@ipset[0].table_family='inet' ``` **Logs** ``` root@OpenWrt:~# logread -e uspot Tue Jul 1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive" Tue Jul 1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:27 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:28 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:30 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" Tue Jul 1 11:26:31 2025 daemon.err uhttpd[3582]: uspot: 10.0.2.28 - config not found for "null" ``` **Additional context** The Version of OpenWRT is 24.10.1
kerem 2026-03-04 14:52:26 +03:00
  • closed this issue
  • added the
    invalid
    label
Author
Owner

@f00b4r0 commented on GitHub (Jul 1, 2025):

You're setting up a network interface without an associated device,

network.captive=interface
network.captive.proto='static'
network.captive.ipaddr='10.0.0.1'
network.captive.netmask='255.255.252.0'

and so uspot doesn't know which network device it's supposed to manage:

root@OpenWrt:~# logread -e uspot
Tue Jul  1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive"
Tue Jul  1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive"
<!-- gh-comment-id:3024429784 --> @f00b4r0 commented on GitHub (Jul 1, 2025): You're setting up a network interface without an associated device, > ``` > network.captive=interface > network.captive.proto='static' > network.captive.ipaddr='10.0.0.1' > network.captive.netmask='255.255.252.0' > ``` and so uspot doesn't know which network device it's supposed to manage: > ``` > root@OpenWrt:~# logread -e uspot > Tue Jul 1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive" > Tue Jul 1 11:18:10 2025 daemon.err uhttpd[3582]: uspot: interface not provided in section "captive" > ```
Author
Owner

@bmberni commented on GitHub (Jul 1, 2025):

In addition I use also mwan3 on this router

<!-- gh-comment-id:3024573054 --> @bmberni commented on GitHub (Jul 1, 2025): In addition I use also mwan3 on this router
Author
Owner

@bmberni commented on GitHub (Jul 1, 2025):

Thanks for the hint!
The problem was solved by adding the following:

network.captive.device='br-captive'

network.@device[1]=device
network.@device[1].type='bridge'
network.@device[1].name='br-captive'
network.@device[1].bridge_empty='1'

When using LuCI, I already saw that the wireless interface is assigned to the “captive” interface, but it was missing in uci.

<!-- gh-comment-id:3025800463 --> @bmberni commented on GitHub (Jul 1, 2025): Thanks for the hint! The problem was solved by adding the following: ``` network.captive.device='br-captive' network.@device[1]=device network.@device[1].type='bridge' network.@device[1].name='br-captive' network.@device[1].bridge_empty='1' ``` When using LuCI, I already saw that the wireless interface is assigned to the “captive” interface, but it was missing in uci.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/uspot#21
No description provided.