Libticonv Guix Package Definition

(define-public libticonv
  (package
    (name "libticonv")
    (version "1.1.5")
    (source (origin
              (method url-fetch)
              (uri "https://www.ticalc.org/pub/unix/tilibs.tar.gz")
              (sha256
               (base32
                "07cfwwlidgx4fx88whnlch6y1342x16h15lkvkkdlp2y26sn2yxg"))))
    (build-system gnu-build-system)
    (arguments
     ;; build fails with out --enable-iconv (...?)
     `(#:configure-flags (list "--enable-iconv")
       #:phases
       (modify-phases %standard-phases
         (replace 'unpack
           (lambda* (#:key source #:allow-other-keys)
             (invoke "tar" "xvkf" source)
             (invoke "tar" "xvkf"
                     (string-append "tilibs2/libticonv-"
                                    ,version ".tar.bz2"))
             (chdir (string-append "libticonv-" ,version))
             #t)))))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("libtool" ,libtool)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("glib" ,glib)))
    (synopsis "Character conversion library for TI calculators:
A part of the TiLP project")
    (description
     "This project aims to develop a multi-platform linking program for
use with all TI graphing calculators (TI73 to V200PLT).")
    (home-page "http://lpg.ticalc.org/prj_tilp/")
    (license license:gpl2+)))

Libticables2 Guix Package Definition

(define-public libticables2
  (package
    (name "libticables2")
    (version "1.3.5")
    (source (origin
              (method url-fetch)
              (uri "https://www.ticalc.org/pub/unix/tilibs.tar.gz")
              (sha256
               (base32
                "07cfwwlidgx4fx88whnlch6y1342x16h15lkvkkdlp2y26sn2yxg"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags (list "--enable-libusb10")
       #:phases
       (modify-phases %standard-phases
         (replace 'unpack
           (lambda* (#:key source #:allow-other-keys)
             (invoke "tar" "xvkf" source)
             (invoke "tar" "xvkf"
                     (string-append "tilibs2/libticables2-"
                                    ,version ".tar.bz2"))
             (chdir (string-append "libticables2-" ,version))
             #t)))))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("autogen" ,autogen)
       ("automake" ,automake)
       ("gettext" ,gnu-gettext)
       ("libtool" ,libtool)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("glib" ,glib)
       ("libusb" ,libusb)))
    (synopsis "Texas Instruments link cable library: A part of the TiLP project")
    (description
     "This project aims to develop a multi-platform linking program for
use with all TI graphing calculators (TI73 to V200PLT).")
    (home-page "http://lpg.ticalc.org/prj_tilp/")
    (license license:gpl2+)))

I am planning to submit this to Guix after completing definitions for the other tilibs2 components.

libticables: guix build notes

christopher@nightshade ~/Build/tilibs2/libticables2-1.3.5$ guix describe
Generation 16	Apr 11 2020 08:47:10	(current)
  guix 658505d
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 658505d7a92f0518e1fc4c965bdaa389a6e83f2c
christopher@nightshade ~/Build/tilibs2/libticables2-1.3.5$ guix environment --pure --ad-hoc gcc-toolchain autoconf automake grep sed coreutils tar xz findutils diffutils m4 autogen libtool pkg-config libusb gawk

Can run autoconf -i -f and configure --enable-usb10 and make without errors, though two deprecation warnings appear.

Am working on package definitions for tiemu and dependencies.

Building LibreCMC in Guix

Was trying today to build v1.5.1 in a Guix –pure environment. This was a bit painful to figure out due to defects in the build scripts. For starters, one build script does not properly recognize the presence of git in your path, so you must delete the following lines from include/prereq-build.mk:

$(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \
git --exec-path | xargs -I % -- grep -q -- --recursive %/git-submodule))

Now here is a working Guix environment:

christopher@eowyn ~/Build/librecmc-lts$ guix environment --pure --ad-hoc gcc-toolchain perl make git coreutils grep sed bash which pkg-config binutils ncurses wget tar patch diffutils unzip bzip2 findutils gawk gengetopt python2 python file util-linux nss-certs

There is another bug in the build scripts that for some reason cannot see the runtime path to some of the ncurses libraries. Also, build scripts do not detect gcc, so:

christopher@eowyn ~/Build/librecmc-lts [env]$ pkg-config --libs ncurses
-L/gnu/store/gzp4ig4rdb1qf4i5dy1d9nl0zmj5q09y-ncurses-6.1-20190609/lib -lncursesw
christopher@eowyn ~/Build/librecmc-lts [env]$ LD_LIBRARY_PATH=/gnu/store/gzp4ig4rdb1qf4i5dy1d9nl0zmj5q09y-ncurses-6.1-20190609/lib CC=gcc make menuconfig

I had a thought to patch the librecmc build scripts, and then work on a LibreCMC Guix package definition. But not sure how soon I will get to that.

HackRF Shell FM Receiver: Real Audio Output!

It has been a few months since the last report, but I have still been working on my Scheme FM receiver project here and there. With toddlers about, and other responsibilities, it can be hard to get in more than 30 minutes of work on it a week. Also, they are fond of pressing the computer reset button in the moments of my most intense concentration.

Several weeks were spent trying to figure out how to improve program performance, enough that I could actuallt process the data in real time. The main key there was understanding how to properly arrange the processing and the decimation, to reduce calculations required. But I learned a lot in the process about efficient use of Guile Scheme and C bindings — mainly figuring out different ways to reduce function calls, type checks, and type conversions.

After quite a lot of work creating bindings, I got the bandpass filter and the fm demodulation into the processing chain. However, the data being spit out after the demodulation was all garbage, though with some patterns here and there. It took many weeks of bug hunting and studying signal theory, to root out the errors, most of which were mishandling of data pointers, though there was also some fuzzyiness in my understanding of convolution, FIR filters, and FM demodulation that I had to work through.

I got through that, and was finally able to get some data out of the receiver that sounded like real FM radio sounds. However, the desired sounds were buried deeply in distortion and noise. With some further study, I realized that I needed another filter after the FM demodulation. That seems to be what they do in the GNU Radio WBFM block. Also, I learned that in real FM broadcast radio signals, there is a stereo channel (or rather, the L-R channel) inserted as side-bands around the mono channel (or rather, the L+R channel) so you have to filter that out (or do the additional stereo processing). I inserted another filter, in the process learning a bit about C macro procedures.

After this, I was able to receive understandable FM broadcast audio, from a local country/western station. However, the audio still has a noticeable amount of static. Adjusting the filter values does affect that, so I am in the process of trying out different values to see what works best. I think I also need to do something to reverse the high-frequency “pre-emphasis” which is used in FM broadcasting.

Amateur Radio Logbook 20200222

Worked 40 meter band on Feb 22 2020, calling CQ on 7.25 Mhz with IC-746PRO using multiband antenna from Hagelbarger lookout in Fairbanks. Made contact at 12:16 AKST with KL7EDK, who reported that my signal was “not coming in strong” but said I was S-5. Finished calling CQ about 45 minutes later but did not make any other contacts.

Tuning around the bands, I found what sounded like some kind of data transmission at 14.434.79 Mhz.

Eielson Ionosonde for 12:15 AKST showed almost no data except a blip of E-layer.

Amateur Radio Logbook 20200212 – 2m Propagation Testing Hagelbarger Lookout Fairbanks, AK

Hagelbarger Lookout – 2m Propogation Test

Start date and time: 2020-02-12 20:05 AKST
End date and time: 2020-02-12 20:30 AKST

Frequency: 146.52 Mhz, simplex

Primary station:
KL1TL
Hagelbarger Lookout, northern Fairbanks, AK, USA
Stationary Operation from mobile station
GMC Jimmy, 5/8 whip antenna, 75 Watts, ICOM IC-V8000

Contacts:

AL7N, 20W, Colinear Vertical
Airport Way & Market St
AL7Z reads KL1TL with all bars, full quieting

KL7AJ, North Pole residence, 50W
Homebrew Ground Plan
KL7AJ reads KL1TL at nearly full quieting

KL7EDK, Farmers Loop & Steese
10 Watt Quarter Wave
KL7EDK reads KL1TL at full quieting

KL4DA, North Pole, location Plack Rd, Northpole, near the Pipeline
6-10 Watts, Diamond X 50A, 30ft off the ground
KL4DA reports KL1TL perfectly clear
Later switched to Kenwood portable hand-held
Kenwood TH-D74 transmitting at 5 Watts
KL4DA reports KL1TL having slight background static

AD4BL, 14 Mile Chena Hot Springs Rd
Diamond X 50A, transmitting 50 Watts
AD4BL reports KL1TL at full quieting

Forgot to record return signal reports, but from memory all contacts
easy to understand with some very slight background
static. KL4DA’s portable had more crackling.

Ionosonde report for 8pm AKST (Eielson):

8:15pm: