I've switched wifi and modem on and off a couple times, it
always correctly reconfigured, with priority for wifi, and ota
flash was usable on all connections.
I found and fixed an issue with wifi not
attempting STA reconnections in APCLIENT mode. That may
have been the cause of some of Greg’s issues.
Regarding Wifi and Modem co-existing, I think this is a
similar issue to what I saw with APCLIENT. Sometimes wifi
doesn’t remove the interface. There is also a race condition
where an interface is ‘up’, but has not yet been assigned an
IP address (as is the case with the ‘pp’ interface you show
below).
I remain convinced that the correct way to
deal with this is to bind our source address to the
preferred interface, whenever we want to make an outgoing
call. But, looking at the mongoose library code they
simply don’t seem to offer that option. The standard
socket API does, of course, have the bind option after
socket creation but before connect.
LWIP does, however, seem to have an
alternative: netif_set_default().
That function supposedly sets the default interface to be
used, unless one is specified manually (presumably by
binding the socket). I think we can have net manager use
that whenever modem/wifi comes up or goes down.
Going down that route, I added it, but then
found some messy handling (in netmanager)
of m_connected_wifi. That would be set if either a STA or
AP wifi came up, but that doesn’t seem right. We don’t
want to set default routes out an AP link. So, I
refactored that, and added a separate m_wifi_ap flag in
netmanager to track AP being up/down. Then, that
introduced a problem into MDNS as it was listening on
the network.wifi.up event (as it needs to come up both in
AP and STA modes), so I fixed MDNS to work like the
others. I may re-visit this tomorrow, as perhaps two new
events ‘wifi.any.up’ and ‘wifi.any.down’ may be a better
way to do this (rather than the generic network manager
messages we are using at the moment, with the client then
checking the flags to see which one came up - wifi or
modem).
There is a new Info level output from
‘netmanager’ to show if it changes the default interface,
and I extended ‘network status’ to show link status on
interfaces, interface numbers, and default interface
status. This should give us some more visibility as to
what is going on.
I haven’t managed to find the issue with wifi
AP not bringing down interfaces correctly.
Overall, this was a fairly large re-factor,
and I am concerned about unintended consequences. I do,
however, think that the approach is right. I haven’t got
cellular coverage at home (almost midnight here) so can’t
test modem connections. I’ll take it for a drive tomorrow
and try then.
This is what it looks like for me, tonight:
OVMS > wifi
mode apclient AP STA
Starting WIFI as
Access Point and Client...
...
I (21957) wifi: mode : sta
(re:da:ct:ed:da:ta) + softAP (al:so:re:da:ct:ed)
I (21967) events:
Signal(system.wifi.sta.start)
I (21977) events:
Signal(system.wifi.ap.start)
I (21987)
esp32wifi: AP started with SSID: STA, MAC:
al:so:re:da:ct:ed, IP: 192.168.4.1
I (21987) events:
Signal(network.mgr.init)
I (22027)
ovms-mdns: Launching MDNS service
OVMS > network
Interface#2: ap2
(ifup=1 linkup=1)
IPv4:
192.168.4.1/255.255.255.0 gateway 192.168.4.1
Interface#1: st1
(ifup=0 linkup=1)
IPv4:
0.0.0.0/0.0.0.0 gateway 0.0.0.0
Interface#0: lo0
(ifup=1 linkup=1)
IPv4:
127.0.0.1/255.0.0.0 gateway 127.0.0.1
DNS: None
Default Interface:
ap2 (192.168.4.1/255.255.255.0 gateway 192.168.4.1)
...
I (24377) wifi: connected
with STA, channel 11
I (24387) events:
Signal(system.wifi.sta.connected)
I (27737) event:
sta ip: 10.x.x.212, mask: 255.255.255.0, gw:
10.x.x.64
I (27747) events:
Signal(network.interface.up)
I (27747)
netmanager: Set DNS#0 8.8.8.8
I (27757)
netmanager: Set DNS#1 8.8.4.4
I (27757) events:
Signal(system.wifi.sta.gotip)
I (27767)
netmanager: Interface priority is st1
(10.x.x.212/255.255.255.0 gateway 10.x.x.64)
I (27767) events:
Signal(network.wifi.up)
I (27777) events:
Signal(network.up)
I (27787) time:
Starting SNTP client
I (27787)
esp32wifi: WiFi UP with SSID: STA, MAC:
re:da:ct:ed:da:ta, IP: 10.x.x.212, mask: 255.x.x.0,
gw: 10.x.x.64
D (27827) time:
ntp (stratum 1 trusted 1) provides time Sat Mar 17
15:30:37 2018 (135125us) UTC
OVMS > network
Interface#2: ap2
(ifup=1 linkup=1)
IPv4:
192.168.4.1/255.255.255.0 gateway 192.168.4.1
Interface#1: st1
(ifup=1 linkup=1)
IPv4:
10.x.x.212/255.255.25.0 gateway 10.x.x.64
Interface#0: lo0
(ifup=1 linkup=1)
IPv4: 127.0.0.1/255.0.0.0
gateway 127.0.0.1
DNS: 8.8.8.8
8.8.4.4
Default Interface:
st1 (10.x.x.212/255.255.255.0 gateway 10.x.x.64)
All the above is committed, and pushed.
Regards, Mark.
New issue, possibly also routing related:
powering down the modem to force using Wifi used
to work before, I now get:
I (724597) gsm-ppp: status_cb:
Connected
I (724597) gsm-ppp:
our_ipaddr = 10.170.195.13
I (724597) gsm-ppp:
his_ipaddr = 10.64.64.64
I (724597) gsm-ppp:
netmask = 255.255.255.255
I (724597) gsm-ppp:
our6_ipaddr = ::
I (724597) netmanager: Set
DNS#0 8.8.8.8
I (724597) netmanager: Set
DNS#1 8.8.4.4
I (724597) time: Starting SNTP
client
OVMS > network status
Interface#2: pp
IPv4:
10.170.195.13/255.255.255.255 gateway
10.64.64.64
Interface#1: st
IPv4:
192.168.2.105/255.255.255.0 gateway
192.168.2.1
Interface#0: lo
IPv4: 127.0.0.1/255.0.0.0
gateway 127.0.0.1
DNS: 8.8.8.8 8.8.4.4
OVMS > ota flash http ovms.dexters-web.de/g/spacer.gif
Current running partition is:
factory
Target partition is: ota_0
Download firmware from ovms.dexters-web.de/g/spacer.gif
to ota_0
Expected file size is 67
Preparing flash partition...
Error: ESP32 error #5379 when
writing to flash - state is inconsistent
E (763827) esp_ota_ops: OTA
image has invalid magic byte (expected 0xE9,
saw 0x47
OVMS > power simcom off
Power mode of simcom is now
off
I (782817) simcom: State:
Enter PoweringOff state
I (782817) gsm-ppp: Shutting
down (soft)...
I (782817) time: Restarting
SNTP client
I (782827) gsm-nmea: Shutdown
(direct)
I (782837) simcom: Power Cycle
OVMS > network status
Interface#2: pp
IPv4:
0.0.0.0/255.255.255.255 gateway 0.0.0.0
Interface#1: st
IPv4:
192.168.2.105/255.255.255.0 gateway
192.168.2.1
Interface#0: lo
IPv4: 127.0.0.1/255.0.0.0
gateway 127.0.0.1
DNS: 8.8.8.8 8.8.4.4
I (793147) simcom: State
timeout, transition to 1
I (793147) simcom: State:
Enter CheckPowerOff state
I (794657) gsm-ppp:
StatusCallBack: User Interrupt
I (794657) gsm-ppp: PPP
connection has been closed
OVMS > network status
Interface#2: pp
IPv4:
0.0.0.0/255.255.255.255 gateway 0.0.0.0
Interface#1: st
IPv4:
192.168.2.105/255.255.255.0 gateway
192.168.2.1
Interface#0: lo
IPv4: 127.0.0.1/255.0.0.0
gateway 127.0.0.1
DNS: 8.8.8.8 8.8.4.4
OVMS > ota flash http ovms.dexters-web.de/g/spacer.gif
Current running partition is:
factory
Target partition is: ota_0
Download firmware from ovms.dexters-web.de/g/spacer.gif
to ota_0
Error: Request failed
W (807247) net:
Error: Failed to connect server ovms.dexters-web.de
(error: 118)
Error 118 = Host is unreachable.
Same with modem setstate. The problem occurs
after the first ppp init.
Regards,
Michael
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________
OvmsDev mailing list
OvmsDev@lists.teslaclub.hk
http://lists.teslaclub.hk/mailman/listinfo/ovmsdev
_______________________________________________
OvmsDev mailing list
OvmsDev@lists.teslaclub.hk
http://lists.teslaclub.hk/mailman/listinfo/ovmsdev