In many occasion some of my Sigfox prototypes has been in movement with difficulties to emit ; many source can cause this but basically from discussions with specialists speed is not a close friend of Sigfox technology.
As a quick test is always better than a long theorical discussion, tonight, I took my car and made some tests.
This post details the test of Sigfox running in a car at different speed.
Test conditions
For the test I’m using one of my prototypes with a good antenna from connit, placed in my car in front of the windshield ; inside the car.
I took two road : one for test up-to 90km/h and another for test at 110 and 130km.
For the first road, I’ve test by stopping every 200 meters that the coverage is good and equivalent all along the road. The road is quite flat in a perfect state ( no pothole ) ; not fully strait but with long strait lines.
The first road where I made the test for speed 0Km – 15 km/h – 30km/h – 50km/h – 70km/h – 90 km/h
Messages are captured by 9-12 base stations on this road
Rssi goes up to -90 dB on any location the RSSI signal for at least one basestation is better than -110dB
The second road is a highway, the first part in Orange is a 110Km limited area and the blue part is a 130 km limited area. I was not able to check the static result of a sigfox transmission as I can’t stop on these road. But they have a really good access to the mountain around where the antenna should be.
Messages has been captured from 3 to 6 antenna with RSSI up-to -100dB.
For the different speed, each time I send 2×10 frames : 1 for 12 bytes, 1 of 6 bytes ; every 20 seconds. The results are based on 10 frames. Sometime I had to get them in two separate measure due to the road not long enough. Frame are received or not received by sigfox
Test results
Received 12B LOSS Received 6B LOSS frame frame 15km/h 11/11 0% 10/11 9% 30km/h 10/10 0% 10/10 0% 50km/h 11/11 0% 11/11 0% 70km/h 10/11 9% 11/11 0% 90km/h 11/11 0% 11/11 0% 110km/h 13/14 9% 14/14 0% 130km/h 14/14 0% 14/14 0%
Basically, there is no real message loss related to the speed of the vehicle. But, now if we are looking more in details in the transmission, the impact is larger : every message is sent 3 times at different frequencies ; so if we look at repetition the result is different :
Frame Frame Avg Frame LOSS sent Received received per msg 0km/h 54 54 3 0% 15km/h 63 53 2.65 16% 30km/h 60 50 2.63 17% 50km/h 66 48 2.28 27% 70km/h 66 51 2.42 23% 90km/h 66 48 2.28 27% 110km/h 93 55 1.83 41% 130km/h 87 49 1.75 44%
We can notice that speed directly impacts the performance even for a small speed ; loss is growing with speed growth. It is not possible to conclude to a large impact of going over 90Km/h from this test as the road has been different. When average frame received per message is decreasing it means that chance to loose it is higher. In the test case many antennas where listen to me with good signal so impact of speed when reception is not as good as here can be dramatic for performance.
If you want to take a look in details to the data, you can get them from this file : export-device-messages
Go further
This level of loss in repetition is not a strong issue when the number of antennas around the emitter is large but when you are in an area covered with only 1 or 2 antennas it starts to be a problem. For sure this is related to 2 important factors : density of the antenna and quality of the emitter radio, this ensuring to touch more antennas.
In the above example we see that on GREEN area where we have highway but city environment where we can eventually find more antenna, we have a lot of GPS point. But in the area in RED and ORANGE area the fix density is really lower due to communication loss.
To understand the problem we are most of the time referring to Doppler effect : by moving in a certain direction the message frequency is impacted by the vehicle speed like in this picture :
In fact, when we apply the Doppler formula, with car speed
F' = ( light speed / (light speed light + vehicle speed) * F F' = ( 299 792 458 / ( 299 792 458 + 36.11 ) * 868 xxx xxx
We have a ratio of 0,99999988% the frequency shift is really small and should not impact the communication like we seen and antennas perpendicular to the vehicle should not be concerned by this effect.
This ratio means a frequency shift about 104Hz at 868MHz, regarding Sigfox communication bandwidth per channel (100Hz) it means a shift of 1 channels. So there is no problem for the gateways to get it as it is in the captured bandwidth. Eventually, this will have an impact when you change the angle (like having a 90° turn), in this situation the signal will drop from a channel to another. I assume the gateway are able to manage a such small shift.
So we have to find the reason in another direction : when a signal is transmitted, it takes multiple path to reach is destination, depending on the area topography. By making multiple path the signal is making different time to reach the destination. Longer is the distance to the antenna and larger are the possible path.
Longer path also means :
- Time shift at reception
The problem when the vehicle is moving, as the transmission is during a long time is that the path with higher radio signal to reach the antennas will change during the transmission and this will create shifts in the communication. Regarding the Sigfox modulation based on BPSK, a shift can be interpreted as a kind of phase change echo or it can create a phase change where you did not had one (all the Green Circles can correspond to a phase changed due to a bit change or due to a path changed (longueur path)
More you have transmission, more you have reception point (antennas) and more you have a chance to get a stable path where this phenomena does not appear. Lower is the speed and safer is the path also. The effect of having multiple path is as in the following picture :
Multiple signals are received and they are cumulated in the receiver stand point making the signal looking a different shape.
At 868.2Mhz the period of the signal is 1.15E-9s = 1.15ns So half of a period is 0.576ns. To change the phase of the message, the distance have to change to make a 0.576ns more or less trip. This is equivalent to a distance of 17cm ( also size of the half wave for 868Mhz … make sense). Sigfox throughput is 100bits / s : it means the same phase is used for a period of 0.01s. It means we have 8.682.000 cycles at the same phase. The basestation role is to determine the phase based on a such number of event.
Basically is the path length change for duration higher than 0.01s and a distance modulo +/- 17cm we can have a phase switch and as a consequence a bit switch. This can be detected someway as the bit period is known and if the phase change earlier the system may be able to detect this change as a path change instead of a bit change. I assume this part is the really complexe secret sauce of Sigfox gateways 😉
- Different reception power
Having multiple path and simply moving will create a non stable signal power. Passing along obstacles will make the signal increasing or decreasing. At a certain time the signal for one antenna will pass under the noise level and at this point it will not be able to be decoded correctly by the gateway. Potentially it has been received correctly at this time by another antenna but if all the antenna have face a short period of time a loss of signal all of them will report a corrupted packet. (basically kill it)
More the distance of the device from the antenna is large, more the signal will have a chance to be under the threshold level.
As you can imagine, if you consider the last two effects as the most impacting, even if the signal has been canceled for every antennas during the 2.x seconds of each message transmission, every of the receiving antennas may have received a part of the communication correctly. The actual problem is that every antenna is validating or rejecting the whole frame. We have different solutions :
- Multiply the number of emissions – that way the message is sent multiple time and higher is the chance to get it received completely. This is already implemented in Sigfox protocol : every frame is sent 3 times.
- Multiply the number of antenna to higher the chance to have a valid frame every time. This is network density : antenna are less far from device, signal is more stable. More antenna capture the signal and larger is the chance to receive it. This is why my initial test in a zones covered by about 10 antennas was good.
- Work at bit reception instead of frame : use a network of antenna to capture the frame bit per bit and to the frame decoding on backend thanks to this larger set of data.
This last solution is the one Sigfox is planning to implement soon : by using a group of antenna signal to decode the frame we can assume that is the signal has been loss during the communication it has not been lost the same way by all the antennas. Some may have a stronger signal when some had the lighter one. This way we can expect to drastically reduce the number of loss frame. This will be also directly related to the number of antenna capturing the signal and potentially some of the far one may have only a small part of the message but the one missing to the others 😉