Quozl's Open Source

Quozl works in outback Australia as a firmware and test engineer for a non-profit in Miami that makes laptops for children, and for a business as a systems administrator.

Quozl worked on Open Firmware (IEEE 1275-1994), which uses the Forth programming language. For many years Quozl maintained the version that is used on the One Laptop per Child computers, the most complete and extensive version ever.

| top | all articles in one page | summary by date | summary by category |

C Forth for PlatformIO

Forth Programming
Quozl brought up C Forth on PlatformIO for these target boards;
  • Raspberry Pi Pico RP2040,
  • Adafruit Feather M0,
  • Teensy 3.1, 3.2, 3.5, 3.6, and 4.0,
  • Espressif ESP32.
C Forth is a Forth language environment optimised for embedded use in semi-constrained systems such as System-on-Chip processors.

See Mitch Bradley's C Forth repository on GitHub.

(19 November 2022)

IP over serial on Raspberry Pi

Electronics
How to set up IP over 3.3V serial between a Raspberry Pi and a host computer running Linux.

Prepare the host computer;

  • install the ppp package
    sudo apt install --yes ppp
  • attach a USB to 3.3V serial adapter to the appropriate GPIO pins, and plug it in to the computer,
  • identify the device, let's assume it appears as /dev/ttyUSB0,
  • run as root
    pppd nodetach debug noauth nocrtscts local passive /dev/ttyUSB0 115200 lcp-max-configure 10000

    (this will repeatedly try to establish a connection, because the LCP configure-request transmission count is set very high).
Prepare the Raspberry Pi;

  • install the ppp package
    sudo apt install --yes ppp
  • add two lines to /etc/rc.local before the exit
    systemctl stop serial-getty@ttyAMA0.service
    pppd updetach debug nocrtscts noauth local 10.1.0.1:10.1.0.2 /dev/ttyAMA0 115200
  • reboot
The link will be established, and you can ping or SSH to 10.1.0.1.

Use different addresses if required.

What it looks like on the host computer

using channel 9
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa67760f> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xa67760f> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP EchoReq id=0x0 magic=0x25b9b80a]
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP EchoReq id=0x0 magic=0xa67760f]
sent [LCP EchoRep id=0x0 magic=0x25b9b80a]
rcvd [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 10.1.0.1>]
sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 10.1.0.1>]
rcvd [LCP EchoRep id=0x0 magic=0xa67760f]
rcvd [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
Deflate (15) compression enabled
rcvd [IPCP ConfNak id=0x1 <addr 10.1.0.2>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 10.1.0.2>]
rcvd [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 10.1.0.2>]
local  IP address 10.1.0.2
remote IP address 10.1.0.1
Script /etc/ppp/ip-up started (pid 80399)
Script /etc/ppp/ip-up finished (pid 80399), status = 0x0
  
(25 September 2022)

Fund Me

Social
Hello. Quozl is twiddling his fingers right now.

Do you need his help? Quozl does engineering mentoring, product management, software and firmware engineering, code reviews, quality assurance, testing, and teaching.

Or would you like to conserve native regrowth forest? Quozl helps manage a few million trees in outback Australia, and the project could do with some funding.

Contact quozl at laptop dot org. Thanks!

(17 April 2022)

| top | all the other articles | summary by date | summary by category |


quozl@us.netrek.org