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.
Michael
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