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'll do some road tests later on.
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