Hello Everyone,
Please find the below Client Location Troubleshooting Steps. This can be used in
ALE 1.0, 1.1,1.2 and 1,3 versions.
Debug Steps for ALE Client Location
- Healthy check of ALE server, make sure all services are up and running:
[root@ale ~]# /etc/init.d/locationserver status
Checking license_server... Running with pid 23443.
Checking ls.py... Running with pid 23460.
Checking webconfig.fcgi... Running with pid 23503.
Checking ls_analytics.py... Running with pid 23486.
[root@ale ~]# /etc/init.d/ale-webapps status
Checking Redis server: Running with pid 4288.
Checking Redis server: Running with pid 4327.
Checking Redis server: Running with pid 4366.
Checking Redis server: Running with pid 4405.
Checking Redis server: Running with pid 4444.
Checking nbapi-0.0.1-SNAPSHOT.jar: Running with pid 12900.
[root@ale ~]# /etc/init.d/meridian-tunnel status
Checking wstunnel-0.0.1-SNAPSHOT.jar: Running with pid 15108
15109.
From ALE CLI, make sure configured controller is showing up as Enabled:
[root@ale ~]# ls_cli.py
lscli>
lscli> getcontrollers
======================================================
# Controller IP Enabled AMON Thread Number
======================================================
0 10.11.0.10 Yes 0
1 10.11.0.11 No 1
2 10.73.16.50 No 2
======================================================
Other useful CLI cmds to check maps/aps: campus_show, floor_show, ap_show
ALE configure file: /opt/ale/etc/locationserver.conf
openssl s_client - connect location.meridianapps.com:443
- Note the mac address of the client under test.
- Use ls_analytics.py/uicli.py to monitor the client location.
- From ALE home (/opt/ale/home) directory, start ls_analytics.py and run uiserver start
[root@ale home]# ls_analytics.py -h 1000
location-analytics>uiserver start
- In another ALE home window, start uicli.py
[root@ale home]# uicli.py
Launching UI CLI
- Static add the client mac address: (you can add as many as you want here)
Syntax is : static_add device_name mac_address x y floor_id
uicli> static_add ipod 60:a4:4c:e5:77:c0 190.94 166.07 floor_1.building_1344
ipod is in static
[u'60:a4:4c:e5:77:c0']
note: the x y value is usually the ground truth of the client, but in case of testing moving client, you can give destination ground truth or if you don't know, just type some reasonable x y
- RUN feed_ploc start from uicli
[root@ale home]# feed_ploc start
- Check ls_analytics.py window, if location is calculated, there should be continuously location calculated and printed to the terminal:
location-analytics>
Starting to process feed tcp://localhost:8989
PLoc Worker started
*** out of seq: exp 0 found 119454
2014-04-01 14:01:00 mac=60:a4:4c:e5:77:c0 x=182.50 y=192.50 v1=45 r1=6c:f3:7f:ec:06:c0 v2=40 r2=6c:f3:7f:eb:e1:e0 v3=38 r3=6c:f3:7f:ec:04:60, n=4.00, k=48.00, ts=2014-04-01-14:01:36 latency=35.679225 max=35.679225
[(5, '100.00')]
2014-04-01 14:01:10 mac=60:a4:4c:e5:77:c0 x=187.50 y=192.50 v1=50 r1=6c:f3:7f:ec:06:c0 v2=41 r2=6c:f3:7f:eb:e1:e0 v3=41 r3=6c:f3:7f:eb:4a:60, n=4.00, k=48.00, ts=2014-04-01-14:01:46 latency=35.465411 max=-35.465411
[(5, '100.00')]
2014-04-01 14:01:21 mac=60:a4:4c:e5:77:c0 x=187.50 y=192.50 v1=51 r1=6c:f3:7f:ec:06:c0 v2=47 r2=6c:f3:7f:eb:4a:60 v3=43 r3=6c:f3:7f:eb:e1:e0, n=4.00, k=48.00, ts=2014-04-01-14:01:56 latency=34.898509 max=34.898509
[(5, '100.00')]
2014-04-01 14:01:31 mac=60:a4:4c:e5:77:c0 x=217.50 y=172.50 v1=47 r1=6c:f3:7f:eb:4a:60 v2=44 r2=6c:f3:7f:ec:06:c0 v3=39 r3=6c:f3:7f:eb:e1:e0, n=4.00, k=48.00, ts=2014-04-01-14:02:06 latency=34.270515 max=34.270515
[(5, '100.00')]
2014-04-01 14:01:42 mac=60:a4:4c:e5:77:c0 x=217.50 y=172.50 v1=47 r1=6c:f3:7f:eb:4a:60 v2=45 r2=6c:f3:7f:ec:06:c0 v3=43 r3=6c:f3:7f:eb:e1:e0, n=4.00, k=48.00, ts=2014-04-01-14:02:16 latency=33.759013 max=33.759013
[(5, '100.00')]
- From uicli window, type location_show will give you nicer output, including RSSI/Radio, accuracy etc
uicli> location_show
*** Needed to change config on uiserver
ipod (15,15):
mac=60:a4:4c:e5:77:c0 x=217.50 y=172.50 loc=Floor_1.Building_1344.Sunnyvale_CA. err=209 ts=2014-04-01-14:03:56 v1=47 r1=6c:f3:7f:eb:4a:60 v2=45 r2=6c:f3:7f:ec:06:c0 v3=38 r3=6c:f3:7f:eb:e1:e0 n=4.00 k=48.00 actual=8.33
mac=60:a4:4c:e5:77:c0 x=187.50 y=192.50 loc=Floor_1.Building_1344.Sunnyvale_CA. err=208 ts=2014-04-01-14:03:46 v1=48 r1=6c:f3:7f:ec:06:c0 v2=45 r2=6c:f3:7f:eb:4a:60 v3=40 r3=6c:f3:7f:ec:04:60 n=4.00 k=48.00 actual=8.12
mac=60:a4:4c:e5:77:c0 x=192.50 y=197.50 loc=Floor_1.Building_1344.Sunnyvale_CA. err=208 ts=2014-04-01-14:03:36 v1=48 r1=6c:f3:7f:ec:06:c0 v2=45 r2=6c:f3:7f:eb:4a:60 v3=41 r3=6c:f3:7f:eb:e1:e0 n=4.00 k=48.00 actual=9.59
mac=60:a4:4c:e5:77:c0 x=182.50 y=192.50 loc=Floor_1.Building_1344.Sunnyvale_CA. err=209 ts=2014-04-01-14:03:26 v1=47 r1=6c:f3:7f:eb:4a:60 v2=47 r2=6c:f3:7f:ec:06:c0 v3=39 r3=6c:f3:7f:ec:04:60 n=4.00 k=48.00 actual=8.46
mac=60:a4:4c:e5:77:c0 x=187.50 y=192.50 loc=Floor_1.Building_1344.Sunnyvale_CA. err=207 ts=2014-04-01-14:03:16 v1=49 r1=6c:f3:7f:ec:06:c0 v2=47 r2=6c:f3:7f:eb:4a:60 v3=39 r3=6c:f3:7f:ec:04:60 n=4.00 k=48.00 actual=8.12
- If you don't get locations in step 3, there are several places to check.
- On controller, check if APs are receiving probes from the client
(alpo) #show ap virtual-beacon-report client-mac 60:a4:4c:e5:77:c0
Client not in known station table:60:a4:4c:e5:77:c0
Client MAC:60:a4:4c:e5:77:c0
Current association :None
Steer attempts/Success:0/0
Client Device Type:Unknown
Current state :Steerable
Current Time :Apr 1 13:09:25 2014
STA Beacon Report
-----------------
AP IP address Radio ESSID Signal (dBm) Last update Add time Channel/Clients Flag
-- ---------- ----- ----- ------------ ----------- -------- --------------- ----
1344-1-AP07 10.6.66.36 6c:f3:7f:ec:04:60 ethersphere-wpa2 -58 Mar 3 11:11:46 Mar 3 11:03:44 11/3 S
1344-1-AP11 10.6.66.62 6c:f3:7f:ec:11:00 ethersphere-wpa2 -79 Mar 3 11:11:44 Mar 3 11:03:44 11/1 S
1344-1-AP01 10.6.66.58 6c:f3:7f:ec:0f:c0 ethersphere-wpa2 -67 Mar 3 11:11:46 Mar 3 11:03:44 1/0 S
1344-2-AP09 10.6.98.155 6c:f3:7f:e7:60:00 ethersphere-wpa2 -79 Mar 3 11:11:45 Mar 3 11:03:44 11/1 S
1344-1-AP08 10.6.66.56 6c:f3:7f:ec:08:60 ethersphere-wpa2 -78 Mar 3 11:11:43 Mar 3 11:03:44 6/0 S
1344-1-AP03 10.6.66.35 6c:f3:7f:eb:4a:60 ethersphere-wpa2 -51 Mar 3 11:11:41 Mar 3 11:03:45 11/3 S
1344-1-AP04 10.6.66.61 6c:f3:7f:eb:e1:e0 ethersphere-wpa2 -60 Mar 3 11:11:43 Mar 3 11:03:45 1/2 S
1344-2-AP07 10.6.98.154 6c:f3:7f:e7:47:40 ethersphere-wpa2 -74 Mar 3 11:11:43 Mar 3 11:03:45 1/1 S
pick the AP from the above list and run the following cmd:
(alpo) # show ap arm client-match probe-report ap-name 1344-1-AP07 | include 60:a4:4c:e5:77:c0
60:a4:4c:e5:77:c0 36 0 8 0 Tue Apr 1 13:11:07 2014
- Check if ALE is receiving probes from the AMON feed. <Jyothi?>
From controller side, check if amon feed is being sending out:
(alpo) #show mgmt-server message-counters process stm
you can enable location and amon log from ALE CLI:
check the id for each compent using ls_log_get
lscli> ls_log_get
main id 0 log_level 3
location id 1 log_level 3
locplot id 2 log_level 3
matrix id 3 log_level 3
amon-decoder id 4 log_level 3
bootstrap id 5 log_level 3
mon-parser id 6 log_level 3
lcompr id 7 log_level 3
iap-dec id 8 log_level 3
proto-dec id 9 log_level 3
ble-dec id 10 log_level 3
rtls-decoder id 11 log_level 3
lscli> setloglevel 1,4 4
- Check the contents of the matrix
dump_sta will give you some information if the ALE has received any RSSI information for the client
If you don't see any radio listed or there are less than 3 radios from 3 different APs, and the TRIG counter not increased, but NOT counter is increased, it indicates there is not enough fresh RSSI for ALE to do triangulation.
This will need more in-depth debug to check. Possible reasons include AP density not meeting ALE deployment requirement, less than 3 APs in the area, client did not probe etc.
If it is caused by AP density, you can enable single-AP location recipe. Refer to ALE 1.2 User Guide on how to do it.
lscli> dump_sta | grep -A 20 60:a4:4c:e5:77:c0
S: 60:a4:4c:e5:77:c0 1396387206 1396387006 Floor 1 C: 103 0 STA LOCATED UNASSOC:NIL default:0 15/12 TRIG:35049 NOT:1/Not Enough RSSIs L:1 U:0
<6c:f3:7f:ec:06:c0, 1344-1-AP05, 6c:f3:7f:c6:c0:6c, 48:2, 0, 1396387247
<6c:f3:7f:eb:4a:60, 1344-1-AP03, 6c:f3:7f:c6:b4:a6, 47:2, 0, 1396387247
<6c:f3:7f:eb:e1:e0, 1344-1-AP04, 6c:f3:7f:c6:be:1e, 42:2, 0, 1396387247
<6c:f3:7f:ec:04:60, 1344-1-AP07, 6c:f3:7f:c6:c0:46, 37:2, 0, 1396387247
<9c:1c:12:8c:70:20, 1344-2-AP06, 9c:1c:12:c0:c7:02, 35:2, 0, 1396387247
<6c:f3:7f:ea:39:e0, 1344-1-AP02, 6c:f3:7f:c6:a3:9e, 32:2, 0, 1396387247
<6c:f3:7f:eb:d2:a0, 1344-1-AP06, 6c:f3:7f:c6:bd:2a, 30:2, 0, 1396387247
<6c:f3:7f:ec:0f:c0, 1344-1-AP01, 6c:f3:7f:c6:c0:fc, 29:2, 0, 1396387247
<6c:f3:7f:e7:62:20, 1344-2-AP05, 6c:f3:7f:c6:76:22, 29:2, 0, 1396387247
<6c:f3:7f:ec:15:a0, 1344-1-AP10, 6c:f3:7f:c6:c1:5a, 25:2, 0, 1396387247
<6c:f3:7f:eb:e5:20, 1344-2-AP03, 6c:f3:7f:c6:be:52, 23:2, 0, 1396387247
<6c:f3:7f:e7:47:40, 1344-2-AP07, 6c:f3:7f:c6:74:74, 23:2, 0, 1396387247
<6c:f3:7f:e7:4d:c0, 1344-2-AP08, 6c:f3:7f:c6:74:dc, 21:2, 0, 1396387247
<6c:f3:7f:eb:c9:e0, 1344-2-AP02, 6c:f3:7f:c6:bc:9e, 20:2, 0, 1396387247
<6c:f3:7f:ec:11:00, 1344-1-AP11, 6c:f3:7f:c6:c1:10, 19:2, 0, 1396387247
<6c:f3:7f:e7:5d:a0, 1344-2-AP01, 6c:f3:7f:c6:75:da, 16:2, 0, 1396387237
<6c:f3:7f:ec:01:60, 1344-1-AP12, 6c:f3:7f:c6:c0:16, 16:2, 0, 1396387247
<18:64:72:d7:6c:20, 1344-1-AP09, 18:64:72:c5:76:c2, 13:2, 0, 1396387217
<6c:f3:7f:ec:08:60, 1344-1-AP08, 6c:f3:7f:c6:c0:86, 13:2, 0, 1396387247
- Check the logs to see if any clue
logs can be found at /opt/ale/var/log directory, important one is ls.py/current
/opt/ale/var/log/wstunnel-0.0.1-SNAPSHOT.jar/current
#LocationServices#Meridian#ALE