Ubuntu 22.04.1 Jammy LTS Server Release Notes

Ubuntu Server images use cloud-init to setup the system on first boot including setting up the user password. Please wait a minute after the console appears to login with the following crudentials:

Username: ubuntu
Password: ubuntu

If you attempt to log in before cloud-init has finished, you will get an incorrect login response. It will prompt you to change the password after login for security reasons.

Image Layout

  1. Board specific bootloader which not listed in partition table
  2. FAT32 EFI partition 1 with cloud-init settings and GRUB (/boot/efi)
  3. BTRFS root partition 2 (/)

In the first partition, there are two files, user-data and network-config that will be applied only on first boot of the image.

Configuring System Settings such as First User or Hostname

File: user-data
Default user is ubuntu. To change the password and expiration, edit the lines below:

chpasswd:
  expire: true
  list:
  - ubuntu:ubuntu

Setup additional users and groups by editing the lines below:

## Add users and groups to the system, and import keys with the ssh-import-id
## utility
#groups:
#- robot: [robot]
#- robotics: [robot]
#- pi
#
#users:
#- default
#- name: robot
#  gecos: Mr. Robot
#  primary_group: robot
#  groups: users
#  ssh_import_id: foobar
#  lock_passwd: false
#  passwd: $5$hkui88$nvZgIle31cNpryjRfO9uArF7DYiBcWEnjqq7L1AQNN3

Hostname: uncomment and change the desired hostname

#hostname: ubuntu

Configuring Network Settings such as WiFi or Wireless

The server images do not use an active network manager like the desktop images. Initial network configuration is set in the network-config file on the first partition which is FAT32 and accessible on Mac/Windows machines. The image network settings can preconfigure by modifying this file after burning it and before booting the system for the first time.

  1. cloud-init renders a netplan file once on the image’s first boot
  2. netplan applies the network settings through systemd-networkd

To modify the network settings on a booted system, modify /etc/netplan/50-cloud-init.yaml.

By default, the file looks like this:

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2

After plugging in a WiFi dongle, find the name via cat /proc/net/wireless. Change the netplan file /etc/netplan/50-cloud-init.yaml to something this:

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    wifis:
        NETWORK DEVICE:
            optional: true
            access-points:
                "NETWORK SSID":
                    password: "NETWORK PASSWORD"
            dhcp4: true
    version: 2

Replace NETWORK SSID with the wireless network name you would like to connect to. Replace NETWORK PASSWORD with the password to the wireless network. Change NETWORK DEVICE to your wireless device interface name. To get a list of wireless device interface names:

iw dev

Reboot the system or sudo netplan apply.

Server images include weston for testing advanced board graphical capabilities on wayland. We recommend trying the following:

  1. weston
  2. chromium-browser sudo snap install chromium
    2.a. 720P60/1080P30 YouTube playback (active cooling recommended)
    2.b. ad block recommended for reduced resource use
  3. gstreamer (gst123) for HW accelerated playback of 4K videos
  4. glmark2-es2-wayland OpenGL ES2 demo
3 Likes

I plugged in a Wifi dongle. I did not have file: /etc/netplan/50-cloud-init.yaml. I had to create it. I created one exactly as described above. After I did “sudo netplan apply”, I saw another interface, and was able to connect to it. BUT when I removed the dongle, the second interface disappeared.

So with the dongle, I have two interfaces, and without a dongle I have none. So this still does not work for me. Please help.

Provide the output of sudo lsusb -t, cat /proc/net/wireless, and ip addr.

=============== With dongle =================

hyper@aml-s905x-cc:~$ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 1: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=r8188eu, 480M
hyper@aml-s905x-cc:~$ cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
wlx984827c45a43: 0000   93.  -42.  -256.       0      0      0      0      0        0
hyper@aml-s905x-cc:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 42:59:69:72:b9:bf brd ff:ff:ff:ff:ff:ff
3: wlx984827c45a43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 98:48:27:c4:5a:43 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.104/24 brd 10.0.0.255 scope global dynamic noprefixroute wlx984827c45a43
       valid_lft 172539sec preferred_lft 172539sec
    inet6 2601:281:8281:9870:dc97:5313:6e09:7f38/64 scope global temporary dynamic 
       valid_lft 297sec preferred_lft 297sec
    inet6 2601:281:8281:9870:9a48:27ff:fec4:5a43/64 scope global dynamic mngtmpaddr 
       valid_lft 297sec preferred_lft 297sec
    inet6 fe80::9a48:27ff:fec4:5a43/64 scope link 
       valid_lft forever preferred_lft forever

====== Without dongle ============

hyper@aml-s905x-cc:~/Documents/wifi_problems$ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 1: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
hyper@aml-s905x-cc:~/Documents/wifi_problems$ cat /proc/net/wireless
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
hyper@aml-s905x-cc:~/Documents/wifi_problems$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 42:59:69:72:b9:bf brd ff:ff:ff:ff:ff:ff

Thank you

Did you replace NETWORK DEVICE with wlx984827c45a43 in your netplan yaml file and then run netplan apply?

Yes, here is my netplan config file:


$ cat  /etc/netplan/50-cloud-init.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

  ethernets:
      eth0:
        dhcp4: true
        optional: true

  wifis:
      wlx984827c45a43:
        optional: true
        access-points:
            "MyWirelessNetwork":
                 password: "MyPassword"
        dhcp4: true

What happens after you apply it? What interfaces appear?

It only appears if the dongle is plugged in.

Did you try removing the WiFi section when it’s not plugged in? There’s an optional: true flag you can add to WiFi to prevent it from stalling the network when the WiFi is not there. Just by unplugging the WiFi should not make eth0 go away. This is standard Ubuntu stuff.

Can you copy your console output of ip addr before and after you remove the dongle?

I tried to comment it out, and run sudo netplan apply. Nothing happened. I do not see how this could help.

There is already “optional: true”. Do you suggest adding it elsewhere?

I do not think anything is stalling. When I remove the dongle, WiFi disappears. When I put it back, it reappears.

Does this work for you when you device is not connected to ethernet? I have an impression that those two are connected somehow.

I already posted the output of “ip addr” with and without the dongle.

Your problem description is not clear in your original post. So when you remove the dongle, you want ethernet to take over? You still have the ethernet interface per your ip addr without the dongle.

eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP>

No carrier means that the ethernet could not detect a signal. Either the cable is not connected or the wrong cable type (straight vs cross-over) is connected if the other end is 100Mb Fast Ethernet as well. There’s no Auto-MDIX on AML-S905X-CC so cable type matters if the other end isn’t Gigabit. If the other end is Gigabit, then cable type doesn’t matter.

Please try to explain what you are trying to do again in a more clear fashion.

1 Like

I do not care at all about the Ethernet. (I only put it there because it was in your example.) I just want to make WiFi working. I assume that it should work without any dongle. But it does not.

Luckily I have an external WiFi card which connects to USB – so called dongle. It helped me many times to fix the issue. It often works when the built-in wifi card does not work. It allows me to connect to internet download the packages and drivers, and after this, the built-in wifi would work without my dongle. This is what I expect. Are we on the same page about the dongle?

So far this did not work, and I see a very strange behavior. My WiFi dongle is recognized, and I am able to connect to WiFi. When I make modification per you suggestion, another interface appears. I see two interfaces, and I can connect to my WiFi using either of the two interfaces. So far so good.

But when I remove my dongle, BOTH interfaces disappear. This is not good. I expect that the built-in wifi remain operational. And it does not.

When I put back my dongle, I see two interfaces again and they both work.

None of our boards have built-in WiFi for regulatory and design reasons.

Ok, I did not realize you do not have wifi on these boards.

You can get cheap dongles here: GenBasic WiFi 4 USB Nano Wireless Network Dongle Adapter for Linux – LoveRPi

Plug and play.

Ubuntu Jammy from Canonical ships with a 5.15 kernel. The latest Ubuntu Jammy image from distro.libre.computer seems to include a 6.x kernel, while earlier images were 5.x kernels. I’m using a kernel module that is only compatible with the latest Ubuntu LTS kernel (5.x). Is there a way to download previous Ubuntu Jammy images from distro.libre.computer?

1 Like

You can apt install the normal Ubuntu kernel but some things might not work on it.

@librecomputer since the latest update OpenMPI stopped working with my 2 Libre running Ubuntu. The 2 Raspberry Pi with Ubuntu in the same cluster are doing fine.

Error message is:
WARNING: Open MPI failed to TCP connect to a peer MPI process. This
should not happen.

Your Open MPI job may now hang or fail.

@librecomputer I have done a new clean installation to ensure nothing else is broken, but the result with OpenMPI is the same