Observation 2644154: ISS (25544)

Regarding Observation 2644154

The client did not decode the full ISS sstv image although the signal was very clear - I think my antenna actually is doing better without the mast amp and just running the rtl-sdr at max gain. Playback the iq and decode with qsstv - had to fish around for the sample rate of 66k ??? Or is it actually 65536 :grinning: got this complete image
2644154_sstv

1 Like

The IQ sample rate for sstv pd120 must be this - from
/usr/bin/satnogs_sstv_pd120_demod.py

    self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_fff(
        audio_samp_rate / (4*4160*4),
        taps=None,
        flt_size=32)

4*4160*4 = 66560

so the 66k guess was close enough to decode from IQ

I’ve also noticed that the auto SSTV decoder did not work as well this time around. Curious.

–Roy
K3RLD

I noticed something similar with my station and I assumed that it was a local problem there.

I piped the audio through my decoder testbed, which uses pretty much the same gnuradio flowgraph as the one in gr-satnogs and they seemed to work fine.

Uponfurther investigation I found that the images in stored on the station where fine and complete.
However the files that have been uploaded seem somehow truncated.
They are smaller and corrupted.

E.g. for the images in this observation:

[sebastian@laptop tmp]$ python3
Python 3.8.3 (default, May 17 2020, 18:15:42) 
[GCC 10.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import Image
>>> img = Image.open("data_2644154_0.png")
>>> img.verify()
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/PIL/PngImagePlugin.py", line 168, in crc
    crc2 = i32(self.fp.read(4))
  File "/usr/lib/python3.8/site-packages/PIL/_binary.py", line 75, in i32be
    return unpack_from(">I", c, o)[0]
struct.error: unpack_from requires a buffer of at least 4 bytes for unpacking 4 bytes at offset 0 (actual buffer size is 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/site-packages/PIL/PngImagePlugin.py", line 725, in verify
    self.png.verify()
  File "/usr/lib/python3.8/site-packages/PIL/PngImagePlugin.py", line 196, in verify
    self.crc(cid, ImageFile._safe_read(self.fp, length))
  File "/usr/lib/python3.8/site-packages/PIL/PngImagePlugin.py", line 172, in crc
    raise SyntaxError(
SyntaxError: broken PNG file (incomplete checksum in b'IDAT')

Also the decoder should alway fill the rest of the image with black pixels, so they all should have the size of a full PD-120 frame.
If the images look like the something must have gone really wrong somewhere.

So my guess would be that the files have been uploaded before the decoder was finished writing them to disk or that the the upload somehow stopped mid-file.

Unfortunately I did not have time to debug the issue further.

1 Like

That could be the case if they don’t use a temporary name. If this is indeed the case, then there are two solutions, either use a temporary name while decoder writes the image and rename it after it ends, or upload files of a specific observation after it is finished.

The latter is something that would be implemented soon on client as it is part of uploading artifacts, but until then we may use the rename solution if this is possible and easy to change.