Skip to content

@sakaki- sakaki- released this Sep 2, 2019 · 8 commits to master since this release

This is a bugfix release to v1.5.0. If you are already on v1.5.0, you can upgrade by following the instructions below (or wait for the automated weekly update to do this for you; note however, that due to a required genup upgrade during this process, it will take two weekly runs to fully update your system, so you may wish to follow the manual route anyway to speed things along).

Changes in this release (see main project page for further details):

  • Fixed a pulseaudio problem that was causing glitchy audio playback on some systems (by setting tsched=0 in /etc/pulse/default.pa; credit: Darksky). Thanks to Gazzy for reporting.

  • Reversed a change to the default /boot/config.txt that was causing monitor autodetection problems for some users (hdmi_drive=2 was uncommented in v1.5.0, my fault ><). Thanks to Gavinmc42 for reporting / testing the fix.

  • Upgraded the shipped kernels, to bcm{rpi3,2711}-kernel-bis-bin-4.19.67.20190827, and boot firmware, to sys-boot/rpi3-64bit-firmware-1.20190819 (which inter alia should hopefully also solve a number of HDMI issues; thanks to derders and MamiyaOtaru for reporting). The shipped RPi4 kernel contains a PR which fixes a rather serious under-load WiFi problem for >1GiB systems (thanks to jfikar for reporting / testing, and also to pY4x3g for testing).

  • Changed the pyconfig_gen WiFi regulatory domain setup code, so that it also sets cfg80211 ieee80211_regdom via an entry in /etc/modprobe.d/ (the original iw reg set approach is retained also, but it is reportedly not sufficient in all locales). Thanks to Gazzy for suggesting. The combination of this fix and updated kernel should hopefully address the WiFi connection problems that some have reported on the RPi4 (thanks to roylongbottom for providing diagnostic information on this, and to Mrsell for testing).

  • Fixed an (unrelated) bug in pyconfig_gen, which prevents it starting up if the framebuffer display driver was specified (by omission of an vc4-{f,}kms-v3d entry in /boot/config.txt).

  • Improved the build settings for dev-lang/python, by adopting the Debian approach of using -O3 and turning on profile-guided optimisation. This should significantly improve performance of e.g. emerge. For more details, please see this post. Thanks to ejolson for drawing the relatively poor Python performance on the v1.5.0 image to my attention, and to InBetweenNames for the pgo-enabled ebuilds.

  • Added python3_7 to PYTHON_TARGETS, and unmasked for arm64. Following upstream, retained python:3.6 as the default interpreter for now (although you can easily change this if you wish, via eselect python list / sudo eselect python set <...>).

  • Various minor ebuild tidy-ups (including the addition of USE-flag control for a number of RPi-specific patches e.g. rpi-v3d to media-libs/mesa etc.).

  • Split out the core USE-controlled package group in rpi-64bit-meta, into the new innercore and a now-reduced core. This is to allow a minimal image to be more easily specified.

  • All packages brought up-to-date against the Gentoo tree, as of 24 August 2019.

Pi-Top Image EOL; CLI-Only 'Lite' Image Added

Unfortunately, I have had to drop support for the Pi-Top specific image as of this v1.5.1 release. My Pi-Top v1's hub has recently suffered a hardware failure, leaving me unable to charge the internal battery, or boot an RPi3 in its chassis. As such, I am unable to test this variant of the image going forward - and I am not comfortable releasing images I haven't tested myself. You should still be able to bring up the Pi-Top specific drivers by setting the pitop USE flag globally, and then re-emerging rpi-64bit-meta however. My apologies for the inconvenience to users on this platform ><

On a happier note, as of v1.5.1, a 'lite' 64-bit Gentoo image is also provided (as requested here). This contains only the innercore (see above) package set and @system set plus deps, and boots to a CLI. No desktop environment is provided by default, nor are any of the heavyweight applications (Chromium etc.) bundled. The same dual (-bis) kernels and Pi-specific startup services as the main image are used.

Note that for ease of binhost maintenance, this image still derives from the custom (desktop) profile as the 'full-fat' version, and as such contains quite a few more packages than a truly minimal stage 4 would do. But hopefully it should still be a useful starting point for those who want to e.g. build up a headless server. Feedback welcome.

Miscellaneous Hints

Updated EEPROM Firmware

If you are using a Pi4, don't forget to update your EEPROM firmware; there's an official fix released (version 0137a8) that will allow your system to use ~300mW less power. For more information, please see here.

Pimoroni Fan SHIM

If you are using the Pimoroni Fan SHIM with your RPi4, note that you can easily have it turn on and off in a temperature-controlled manner. To do so, simply add the following to /boot/config.txt:

 dtoverlay=gpio-fan,gpiopin=18,temp=65000

The temp parameter controls the point at which the fan comes on (in the above, 65°C). Adapt as appropriate. The driver has a built-in 10°C hysteresis, so using the parameters above for example, it will switch off again at 55°C automatically. Thanks to PeterO for the hint.

Upgrading from an Earlier Release of the Image

Users downloading this v1.5.1 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

Users on releases earlier than v1.5.0 should follow the manual upgrade instructions to 1.5.0 below; the final step genup therein will actually bring you to v1.5.1 now.

To upgrade manually (from v1.5.0), simply issue (working as root):

pi64 ~ # emaint sync --repo sakaki-tools
pi64 ~ # emerge -v --oneshot --update app-portage/genup
pi64 ~ # genup

Let this run to completion. Once done, reboot to start using the updated kernel, and once back up again run:

pi64 ~ # dispatch-conf

to review any modified configuration files. If in doubt, press u when prompted, to use the new copy of the file (you can learn more about using the dispatch-conf tool here).

Once that's done, verify you are on >=v1.5.1, by issuing:

pi64 ~ # eix rpi-64bit-meta
Assets 6

@sakaki- sakaki- released this Aug 19, 2019 · 13 commits to master since this release

This release marks a significant milestone for the project, as the RPi4 is now supported (in addition to the RPi3 model B and B+, which remain supported too).

If you would like to upgrade an existing, older version of this image to v1.5.0 (rather than just downloading and using the latest v1.5.0 image directly), please see below.

Thanks to rapid upstream progress on aarch64 kernel work for the new board, there are surprisingly few compromises required when running the Pi4 under a 'pure' 64-bit OS such as this one. Specifically, for the Pi4 in this 1.5.0 release:

  • V3D graphics acceleration is supported in X under vc4-fkms-v3d / Mesa;
  • the full 4GiB complement of memory is usable (if you are lucky enough to own a top-of-the-line model, that is ^-^);
  • the V4L2 M2M video codecs and optional plug-in camera module are both usable;
  • use of dual HDMI displays is supported;
  • Bluetooth, fast Ethernet, and dual-band WiFi work.

Changes in this release (see main project page for further details):

  • Ground-up recompiled all software on the image (userland and kernel) using march=armv8-a+crc -mtune=cortex-a72 -O2 CFLAGS, meaning it should be optimized for the out-of-order execution provided by the newer Pi4's Cortex-A72 SoC, while still retaining backwards compatibility with the older RPi3 B/B+'s Cortex-A53.
  • Changed the project's GitHub name, from gentoo-on-rpi3-64bit to gentoo-on-rpi-64bit, to reflect the fact that the RPi4 is now also supported. Thanks to the way GitHub does things, people trying to find the old project should be automagically redirected to the renamed version. My bad in choosing an over-limiting moniker first time ><
  • Updated the RPi3 kernel (from the bcmrpi3-kernel-bis weekly autobuild) to version 4.19.66.20190816.
  • Added an additional kernel (from the bcm2711-kernel-bis weekly autobuild). This second kernel is used when booting the RPi4, lives at /boot/kernel8-p4.img, and is a tweaked version, as the name suggests, of a completely separate configuration: bcm2711_defconfig, as opposed to bcmrpi3_defconfig. The two kernels have distinguished release names, and so separate subdirectories in /lib/modules, but as they are built together, they share a common kernel tree tip commit. The kernel version used in this release includes (on the bcm2711 build) the recently-upstreamed PR#3144 (which allows the full 4GiB of RAM to be used, where present) and PR#3063 (which enables the use of V3D acceleration on the Pi4). The two kernels have auto-generated ebuilds by which they are installed: sys-kernel/bcmrpi3-kernel-bis-bin and sys-kernel/bcm2711-kernel-bis-bin, respectively.
  • Boot firmware updated to sys-boot/rpi3-64bit-firmware-1.20190718, and userland libraries to media-libs/raspberrypi-userland-1.20190808 (for dual-monitor aware tvservice utility etc.)
  • Size of the boot partition on the image expanded, from 63MiB to 255MiB, to accommodate the new dual-kernel setup just described (required for RPi3/4 booting).
  • Added dev-lang/go (it's been the most frequently requested package), and (an arm64 Pi4 patched version of) dev-libs/pigpio (for easy control of GPIOs) to the core package set.
  • Added sys-block/gparted (for disk management), net-misc/xorgxrdp and net-misc/tigervnc[server] (for remote access), media-sound/pavucontrol for pulseaudio (also made this a default USE flag), and x11-misc/arandr (for multi-screen layouts) to the xfce package set. (Also modified the arandr ebuild to add a login service that auto-loads layouts saved to ~/.screenlayout/default.sh).
  • Added app-office/abiword to the apps set (a lighter alternative to libreoffice writer - which remains bundled too - that some may prefer).
  • Included a slightly tweaked media-libs/mesa to allow v3d acceleration on the RPi4. Standard vc4 acceleration on the RPi3 is still supported.
  • Updated the pyconfig_gen application (found at SettingsRPi Config Tool): now supports configuring a second monitor (on the Pi4), and also setting the WiFi regulatory domain (RPi3/4). A simple overclocking "manettino" ^-^ for the Pi4 is also provided (all permitted settings should be warranty-safe, per RPF advice, but use at your own risk!).
  • Updated the media-video/pi-ffcam "camera live view" applet to work with the Pi4 (found in the Multimedia menu).
  • Also updated the media/video/pi-ffplay application for the Pi4 (again found in the Multimedia menu, this is a trivial app to illustrate accessing the Pi 3/4's hardware video codecs via v4l2m2m).
  • Moved 6by9's patches to media-video/ffmpeg (upon which the two apps above rely) forward to version 4.1.4, as these don't seem to be upstream yet.
  • Tidied up a number of boot-time services for RPi4 compatibility (e.g., x11-misc/rpi3-safecompositor etc.). Note that for simplicity I have not renamed these, so please don't disable or remove services just because their name starts with rpi3- (as for the most part, they still do something useful on an RPi4 too!).
  • I did change the name of the main repo used by the image though, from rpi3 to genpi64, and migrated the custom profile too. You can read more about this here.
  • Version bumped sys-boot/rpi3-boot-config, to update the baseline /boot/config.txt file for use with the Pi4 (while still retaining compatibility with the Pi3B/B+).
  • Renamed the master meta-package, from rpi3-64bit-meta to rpi-64bit-meta.
  • Added LLVM_TARGETS="WebAssembly BPF" (in addition to the default AArch64), to allow dev-lang/rust to be built with the wasm USE flag.
  • Various minor ebuild tidy-ups.
  • All packages brought up-to-date against the Gentoo tree, as of 10 August 2019 (which means e.g., www-client/firefox-68.0.1, www-client/chromium-76.0.3809.87-r1, app-office/libreoffice-6.3.0.4 etc. are bundled; a full list of installed packages may be found here).

A variant image for the Pi-Top v1 (an RPi3-based DIY laptop) is also included, as usual.

Notes and Caveats

Updated EEPROM Firmware

If you are using a Pi4, don't forget to update your EEPROM firmware; there's an official fix released that will allow your system to use ~300mW less power. For more information, please see here.

USB Shortcomings

As this release comes early in the lifecycle of the RPi4, expect to find a number of bugs and issues with it! In particular, one major issue, (due, as I understand it, per this post by 6by9, to a lack of FIQ fast interrupt handling on aarch64) is that isochronous transfers over USB are likely to be pretty bad in 64-bit compared to 32-bit. For example, USB webcams etc will drop frames (bulk transfers, as you might get e.g. when copying large files to and from a storage device, work fine on USB under 64-bit however; as do low-speed peripherals such as mice and keyboards).

Upgrading from an Earlier Release of the Image

Users downloading this v1.5.0 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

Users on earlier releases who wish to manually upgrade should follow the manual upgrade instructions to 1.4.2 below; the final step genup therein will actually do most of the work of getting you to v1.5.0.

However, as v1.5.0 has a dual-kernel setup (to allow booting on the RPi4, which has a significantly different SoC to the RPi3), you next need to expand your boot partition, and then switch meta-package, to complete the upgrade.

Let's begin by expanding the boot partition. On v1.4.2 and earlier, this is 63MiB in capacity, which is insufficient for a dual kernel system (something I should have anticipated, apologies ><). Since the root and boot (filesystems') partitions directly abut in v1.4.2, you need first to shrink, and then move forward, the root partition (and filesystem); and then expand the boot partition (and filesystem) to fill the space thus freed up.

I recommend using the FOSS gparted graphical tool to do carry out these tasks - it is much less error-prone than using the command line. Begin by backing up your current Gentoo microSD card, then insert it into a Linux PC and run gparted (it is available in most distros). Select the second (root) partition of your card, and elect to shrink and move it, so it has 193MiB of preceding space. Then, select the first (boot) partition, and elect to expand it, from 63 to 256 Mib, with 0 space before and after (the tool will probably change its size to 255MiB automatically, to preserve alignment). Commit the operations, and wait for them to conclude (it may take up to half an hour or so).

Once done, boot your image (on an RPi3) to ensure it is still functional, and check the amount of free space on /boot, using df -h. If all looks good, you can proceed to migrate to the new metapackage. Since you have just genup-ed, your overlays will be up-to-date, so now (working as root at your RPi3, booted into the image), issue:

pi64 ~ #  emerge -v --nodeps dev-embedded/rpi-64bit-meta

We use --nodeps here, as we need both metapackages around at the same time for the next step.

Next, copy across any uncommented custom settings from /etc/portage/package.use/rpi3-64bit-meta to /etc/portage/package.use/rpi-64bit-meta (being sure to change any references to rpi3-64bit-meta to rpi-64bit-meta when you do). Note that for most users, this will be a no-op, as all lines in /etc/portage/package.use/rpi3-64bit-meta will be commented, as originally shipped, but it is always best to check.

Once done, remove the old metapackage from your @world set; issue:

pi64 ~ # emerge --deselect dev-embedded/rpi3-64bit-meta

With that, you're all set to finalize the upgrade. To do so, simply run:

pi64 ~ # emaint sync --repo sakaki-tools
pi64 ~ # emerge -v --oneshot --update app-portage/genup
pi64 ~ # genup

Let this run to completion. Once done, run:

pi64 ~ # dispatch-conf

to review any modified configuration files. Pay particular attention to /boot/config.txt, as the distributed version of this file contains changes that are critical to booting successfully on the RPi4 (if you haven't made any changes to this file, dispatch-conf will silently upgrade it: however, many users will have changed it, either directly or via the pyconfig_gen application, in which case the utility will ask you what to do). If in doubt, press u when prompted, to use the new copy of the file (you can learn more about using the dispatch-conf tool here).

Once that's done, issue:

pi64 ~ # ls /boot/kernel8*

and you should see that you now have a kernel8-p4.img (the Pi4 kernel) installed, as well as the more usual kernel8.img (the Pi3 kernel) in place. And, if you run:

pi64 ~ # eix -I dev-embedded/rpi-64bit-meta

you should see that you have >= v1.5.0 installed. If so, congratulations, your upgrade is complete! You can now try booting your image on an RPi4 if you like ^-^ Good luck!

Assets 6

@sakaki- sakaki- released this Jun 17, 2019 · 15 commits to master since this release

This release is a straightforward update to v1.4.1.

If you would like to upgrade an existing, older version of this image to v1.4.2 (rather than just downloading and using the latest v1.4.2 image directly), please see below.

Changes in this release (see main project page for further details):

  • Kernel updated, to sys-kernel/bcmrpi3-kernel-bis-bin-4.19.49.20190611). Fixes some Bluetooth issues experienced with the prior 4.19 kernel, and adds POE fan and (built-in) btrfs support.

  • Per email request from @iugamarian, added the following applications to the image:

    • media-video/mpv
    • net-p2p/transmission
    • sys-fs/ncdu
    • app-misc/mc
  • Various minor ebuild tidy-ups.

  • All packages brought up-to-date against the Gentoo tree, as of UTC EOD 12 June 2019 (which means e.g., www-client/firefox-67.0, www-client/chromium-74.0.3729.169-r1, app-office/libreoffice-6.2.4.2 etc. are bundled; a full list of installed packages may be found here).

Upgrading from an Earlier Release of the Image

Users downloading this v1.4.2 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

Users on earlier releases who wish to manually upgrade should follow the manual upgrade instructions to v1.4.1 below; the final step genup therein will actually bring you to a baseline v1.4.2 now.

If you are already on v1.4.1, simply run sudo genup to reach a baseline v1.4.2. Then, continue reading as below.

You can easily check your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

Once the baseline upgrade is done, at your option add in the newly supported applications, by issuing:

demouser@pi64 ~ $ sudo emerge -v media-video/mpv net-p2p/transmission sys-fs/ncdu app-misc/mc

Next, ensure that the hardware real-time-clock (RTC) service is disabled; the RPi3 does not have the corresponding hardware device, and although harmless, this service causes annoying error messages at boot. Issue:

demouser@pi64 ~ $ sudo rc-update del hwclock boot

Then, be sure that you merge all configuration file updates. To do so, issue:

demouser@pi64 ~ $ sudo dispatch-conf

and follow the prompts (if you haven't modified this particular file yourself, the changes will already have happened, but if you have changed it, dispatch-conf will ask you what to do - for further guidance, please see my notes here).

Finally, be sure to reboot once the above upgrade process is complete, as a new kernel is installed during the process.

Assets 8

@sakaki- sakaki- released this Mar 10, 2019 · 24 commits to master since this release

This is a minor, bugfix release to v1.4.0. If you are already on v1.4.0, you can upgrade simply by running genup (or wait for the automated weekly update to do this for you).

Users on releases earlier than v1.4.0 should follow the manual upgrade instructions to 1.4.0 below; the final step genup therein will actually bring you to v1.4.1 now.

You can easily check your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

Changes in this release (see main project page for further details):

  • Upgraded the bundled chromium web browser, to www-client/chromium-72.0.3626.121-r1; this version fixes the serious CVE-2019-5786 bug (thanks to cjan for pointing this out), and also a problem that was preventing videos playing correctly on YouTube.

  • Made the boot-time services rpi3-spidev and rpi3-i2cdev core dependencies of rpi3-64bit-meta, so they are always installed, and also modified the rpi3-i2cdev service, so it only loads the relevant kernel module if I2C is turned on in /boot/config.txt. Fixes an issue where turning I2C on in the pyconfig_gen application was not sufficient to have it enabled after reboot. Thanks to procount for reporting.

  • Various minor ebuild tidy-ups.

  • All packages brought up-to-date against the Gentoo tree, as of 19 February 2019 (with the exception of chromium, which has been backported to address a serious security concern; as noted above).

Assets 6

@sakaki- sakaki- released this Mar 6, 2019 · 26 commits to master since this release

This release is a significant update to v1.3.1 as, leveraging the hard work by the RPF's 6by9 and others on the rpi-4.19.y kernel, use of the Pi's camera module, and the Pi's hardware video codecs are now both supported! [1]

If you would like to upgrade an existing, older version of this image to v1.4.0 (rather than just downloading and using the latest v1.4.0 image directly), please see below.

Changes in this release (see main project page for further details):

  • Kernel migrated to rpi-4.19.y (sys-kernel/bcmrpi3-kernel-bis-bin-4.19.25.20190226). As just noted, this represents a significant upgrade, as a number of features (such as v4l2 m2m codec support) are only available in 4.19, and will not (aiui) be backported to 4.14. The boot firmware was also updated to sys-boot/rpi3-64bit-firmware-1.20190213, and the userland libraries to media-libs/raspberrypi-userland-1.20190114.

  • Thanks to advice and patches from the RPF's 6by9, added a version of ffmpeg that can both access the Pi's v4l2 camera (via /dev/video0) and access the Pi's hardware video codec capabilities, via v4l2 m2m (memory-to-memory) interfaces at /dev/video{10,11,12}. The h264_v4l2m2m, mpeg4_v4l2m2m, and (if you have purchased a license key) mpeg2_v4l2m2m codecs all currently work from 64-bit userland. (Note, I have primarily tested decoding, as that is relevant for video playback, but these endpoints should support hw-based encoding too (for h264 and mpeg4, anyhow).)

  • Added (via USE flag on media-plugins/gst-plugins-meta) the necessary additional gstreamer library, to allow it to also access the v4l2 m2m endpoints (media-plugins/gst-plugins-v4l2-1.14.4).

  • Added the pi-ffcam app, a trivial [2] 'live viewer' for the Pi camera module v1/v2 (available under the Multimedia menu). This streams an h264-encoded live video feed from the camera, decodes it using h264_v4l2m2m (i.e., a hardware codec, just for fun ^-^), and then displays the output in an SDL desktop window. It is built on ffmpeg / ffplay. Note that due to buffering, the stream has around a 1s lag. (Also note that you wouldn't build a 'real' live view app like this of course; it's main purpose is to provide confidence that the various interfaces are working.)

  • The media-tv/v4l-utils package is also included; this provides an app (ApplicationsMultimediaV4L2 test Utility) that may also be used (inter alia) to live-view the camera (although I have found its GL output to be unreliable).

  • Added the pi-ffplay app, a trivial [2] video player that can utilize the Pi's built-in hardware codecs just described, for h264, mpeg4, and - if you have purchased the license - mpeg2. It may also be found under the Multimedia menu. The app prompts for a video to play, attempts to probe its video stream type, and plays it, forcing (where possible) an appropriate v4l2 m2m hardware codec (stream decode only; actual blit of the rendered bitmaps to the window is still via the regular pipeline). This uses the standard ffplay underneath, so consult its manpage for details (double-click to toggle full screen etc.) If the video contains an audio track, this will be played also. Unfortunately, the other bundled video playback apps (VLC, Kodi, and SMPlayer) do not yet leverage the m2m codec paths by default - at least, not in the versions currently provided. If you know how to make them do this (either by preference file, USE flag or patching) please let me know! It is a similar case (at the moment) for the bundled Firefox and Chromium browsers (the latter can use v4l2 m2m, but only in an ozone context right now). That's a shame - files like http://jell.yfish.us/media/jellyfish-50-mbps-hd-h264.mkv (1920x1080 50Mbps) choke the RPi3 (even B+) under software rendering, but display relatively smoothly when using the v4l2 m2m codecs (you can easily try for yourself, just download the file and try playing it with e.g. VLC or SMPlayer (the latter does the better job), then try again with ff-play). But as making the connection (particularly where ffmpeg or gstreamer are used 'under the hood') is a relatively straightforward matter, these facilities will hopefully be added in relatively short order.

  • The default GPU memory setting in /boot/config.txt has been increased, to 128 MiB from the prior (de minimis) 16 MiB. Per 6by9 and my own empirical tests, this should be sufficient to permit both camera and v4l2 m2m codec use simultaneously, for most use cases. The camera interface has also been selected by default (start_x=1). NB: if you do not need to use the codecs (or camera) please feel free to revert these settings (memory being a precious resource on the RPi3!).

  • The pyconfig_gen application has been updated; it now allows setting of gpu_mem, and selection of the camera interface (start_x=1).

  • Although I have elected to stay with fkms in this release, for regular RPi3 users, 'true' kms (vc4-kms-v3d) should prove an entirely viable option now (and this can easily be selected via the pyconfig_gen application); I have one system that has been running this for weeks now, and it seems very usable (and exhibits maybe 5-10% more GL bandwidth relative to an fkms system, when compared on a like-for-like, no-display-manager-compositing basis). Please note that under vc4-kms-v3d, window manager compositing should be turned off to prevent periodic 'stalling' of the GUI, and so I have modified the existing rpi3-safecompositor service to do this automatically. For avoidance of doubt, fkms - the shipped default - is unaffected.

    NB: Pi-Top users should definitely stick with fkms - sound output via the built-in speaker does not work when using kms.

  • Various minor ebuild tidy-ups.

  • All packages brought up-to-date against the Gentoo tree, as of 19 February 2019 (which means e.g., www-client/firefox-65.0.1, www-client/chromium-72.0.3626.96-r1, app-office/libreoffice-6.1.5.2 etc. are bundled; a full list of installed packages may be found here).

Upgrading from an Earlier Release of the Image

Users downloading this v1.4.0 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

Users on earlier releases who wish to manually upgrade should follow the manual upgrade instructions to 1.3.1 below; the final step genup therein will actually bring you to a baseline v1.4.0 now.

You can easily check your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

Once upgraded, be sure that you merge all configuration file updates; in particular, this release contains changes to /boot/config.txt (supplied by the sys-boot/rpi3-boot-config package) which must be accepted to use the RPi3's hardware video codecs, and (optional) camera module. To do so, issue:

demouser@pi64 ~ $ sudo dispatch-conf

and follow the prompts (if you haven't modified this particular file yourself, the changes will already have happened, but if you have changed it, dispatch-conf will ask you what to do - for further guidance, please see my notes here).

Notes

[1] There's still no 64-bit userland MMAL just yet, but things are getting closer; in any event, hardware video codec access is one of the big reasons people wanted MMAL ported to 64-bit in the first place, so getting access to this facility via the v4l2 m2m endpoints instead will obviate the need for it, in many cases ^-^

[2] Once ffmpeg has the necessary v4l2 m2m codec support built in (which the version on the image has) then exploiting these features from the command line is trivial - see for example the example CLI 'recipes' in this project's open wiki.

Assets 6

@sakaki- sakaki- released this Dec 28, 2018 · 29 commits to master since this release

This is an incremental release to v1.3.0. If you are already on v1.3.0, you can upgrade simply by running genup (or wait for the automated weekly update to do this for you). However, you may also want to emerge the new top-level application available (chromium), as this will not be automatically installed for you unless you have set the apps USE flag on the rpi3-64bit-meta package (this flag is not on by default).

If you would like to upgrade an existing, older version of this image to v1.3.1 (rather than just downloading and using the latest v1.3.1 image directly), please see below.

Changes in this release (see main project page for further details):

  • Added the full-scale www-client/chromium web browser (in addition to www-client/firefox, which remains supported and included on the image). Note that the version on the image (71.0.3578.62-r2) uses a slightly modified ebuild, which adds the openh264 USE flag, and is built with -proprietary-codecs -openh264, which removes all the (patent encumbered) h264 code from the application, so it may be lawfully distributed in binary form. You can rebuild it yourself with modified USE flags yourself if you wish, of course.
  • The minimum supported microSD card capacity has been increased to 16GB (up from 8GB). In reality, with recent versions of the image 8GB cards were only really useful for a quick tryout; they were too small to properly genup etc., and 16GB cards are now readily available and relatively inexpensive. The initial expanded image size is now 11,328MiB (of which the root partition is 11,264MiB (11GiB), which will be autoexpanded to fill any additional free space on first boot of course), so this provides reasonable headroom.
  • Added the pyconfig_gen utility, for easy, GUI-based update of (a subset of the features contained in) the /boot/config.txt file on the RPi3. This utility is autostarted on first boot for each user. Changes made to the /boot/config.txt file using this application are subject to ratification on reboot; if the user does not explicitly accept them, an automatic reboot under the prior, 'last known good' config is performed. This prevents users locking themselves out by specifying (e.g.) an HDMI mode that is unsupported by their display. Only a relatively small (but hopefully, useful) subset of the options available may be edited via this application, but this will be increased in future. It is still possible to directly edit /boot/config.txt - the app ignores keys it does not manage.
  • As a bonus side-effect of the above, the PyQt5 framework - including the Qt5 Designer GUI editor - has been added to the image.
  • Added an Xfce4 startup service, xfce-extra/xfce4-noblank, to prevent the user's xscreensaver blanking the display when notionally 'off', since this can cause problems with some displays (under vc4-{f,}kms-v3d graphics drivers, at least) where the display cannot be powered back up once blanked in this manner (by regular mouse or keyboard activity, anyhow). Installs an /etc/xdg/autostart/xfce4-noblank.desktop entry.
  • Updated the kernel to sys-kernel/bcmrpi3-kernel-bis-bin-4.14.90.20181222 (and the boot firmware to sys-boot/rpi3-64bit-firmware-1.20181112).
  • Various minor ebuild tidy-ups.
  • All packages brought up-to-date against the Gentoo tree, as of 26 November 2018.

Upgrading from an Earlier Release of the Image

Users downloading this v1.3.1 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

Users on earlier releases who wish to manually upgrade should follow the manual upgrade instructions to 1.3.0 below; the final step genup therein will actually bring you to a baseline v1.3.1 now.

You can easily check your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

Once upgraded, you can, at your option, modify /etc/portage/make.conf, to provide fallback usage of Gentoo's mirror rotation. To do so, issue:

demouser@pi64 ~ $ sudo nano -w /etc/portage/make.conf

Then edit the GENTOO_MIRRORS line in that file, so that it now reads:

GENTOO_MIRRORS="http://gentoo.osuosl.org/ http://trumpetti.atm.tut.fi/gentoo/ http://distfiles.gentoo.org"

Leave the rest of the file as-is, then save, and exit nano.

If you like, you can then install the Chromium browser (an open-source version of Google's Chrome web browser). To do so, issue:

demouser@pi64 ~ $ sudo emerge -av www-client/chromium

Confirm when prompted. The installation is fully backed by binary packages, so should not take too long.

Assets 6

@sakaki- sakaki- released this Sep 26, 2018 · 40 commits to master since this release

This is an incremental release to v1.2.2.

If you would like to upgrade an existing, older version of this image to v1.3.0 (rather than just downloading and using the latest v1.3.0 image directly), please see below.

Changes in this release (see main project page for further details):

  • Migrated from porthash repository verification to Gentoo's own, official gemato-based approach (with failure quarantine). Accordingly, the porthash USE flag on dev-embedded/rpi3-64bit-meta has switched from default-on to default-off as of v1.3.0, and the weekly-gated rsync URI has changed (to one without polluting porthash signatures), from rsync://isshoni.org/gentoo-portage-pi64 to rsync://isshoni.org/gentoo-portage-pi64-gem. (The older version will continue to be supported for a time, for backwards compatibility during the changeover period.)
  • Added support for the transparent-compression write-through zswap cache to bcmrpi3-kernel-bis, and created a startup service (rpi3-zswap) to start using it. Given the highly compressible nature of most RAM pages on a running system, and the RPi3's relatively meagre I/O capabilities, this should materially improve system responsiveness under load. Parameterized via /etc/conf.d/rpi3-zswap.
  • Added a startup service (rpi3-expand-swap), to increase the ('real', backing-store-based) swapfile size to 1GiB, space permitting, as a one-off operation post root partition and filesystem resize. Parametrized via /etc/conf.d/rpi3-expand-swap.
  • Various minor ebuild tidy-ups.
  • All packages brought up-to-date against the Gentoo tree, as of 16 September 2018. Most packages have been rebuilt on gcc-8.2 (which should bring a small performance improvement).
  • Kernel upgraded to sys-kernel/bcmrpi3-kernel-bis-bin-4.14.71.20180922, accompanying boot firmware to sys-boot/rpi3-64bit-firmware-1.20180919 (these will of course auto-update as new versions are unmasked).

Upgrading from an Earlier Release of the Image

Users downloading this v1.3.0 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

First check your current release version, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

(look at the Installed versions: stanza)

Then follow the appropriate directions as shown (based on your release version):

  • If your version is >= 1.3.0, you are already up-to-date! However, if you did not directly download the 1.3.0 image, you should still follow the instructions given immediately below, to ensure all your ancillary settings etc. (which genup may not have conformed for you) are also correct.
  • Or, if your version is 1.2.0, 1.2.1 or 1.2.2, follow these instructions (below).
  • Or, if your version is 1.1.3 or earlier, follow instead these instructions (below).

Upgrading for Users on Version 1.2.x of the Image

For those users on a 1.2.x release, the majority of the upgrade can be taken care of simply by running (as root, or using sudo):

pi64 ~ # emaint sync --repo sakaki-tools
pi64 ~ # emerge --update --oneshot app-portage/genup
pi64 ~ # nice genup

This may take a number of hours to complete.

Next, assuming the genup step completed successfully, you should then perform the following steps to finalize your upgrade.

First, ensure that all fixups have been run (these are small scripts, normally executed by /etc/cron.weekly/fixup, and managed by app-portage/weekly-genup; they may be viewed here). Issue:

pi64 ~ # /etc/cron.weekly/fixup

The output from this may be reviewed in /var/log/latest-fixup-run.log.

Next, ensure that your regular user is a member of the cron group, so that they can maintain their own crontabs. Issue:

pi64 ~ # gpasswd --add demouser cron

Obviously, if you have setup your own regular user, substitute their username for demouser in the above. Repeat the step for each such user you have created.

Then, ensure that your audio settings are persisted across reboots. To do so, issue:

pi64 ~ # rc-update add alsasound boot

Lastly check that you are using the correct binhost. As of 1.3.0, the official Gentoo gemato repository verification (with failure quarantine) is being used, so your binhost needs to be set to the version without additional porthash signed master hashes (since these cause the augmented tree to fail the gemato check). This switch should have been made automatically be the dev-embedded/rpi3-64bit-meta-1.3.0 ebuild, but you should double-check this. To do so, issue:

pi64 ~ # grep sync-uri /etc/portage/repos.conf/gentoo.conf
sync-uri = rsync://isshoni.org/gentoo-portage-pi64-gem

If you do not see the output above, edit /etc/portage/repos.conf/gentoo.conf to correct it, and then run genup again.

Also, ensure you do not have any custom porthash USE flag set in /etc/portage/package.use/rpi3-64bit-meta (this flag has gone from being default enabled in rpi3-64bit-meta-1.2.2 to default disabled in rpi3-64bit-meta-1.3.0). For avoidance of doubt, if you are unsure what is meant by the preceding comment, you have not set a custom flag, and may disregard this point.

Next, clean up any configuration files that may have been changed by the release, using dispatch-conf. When this tool prompts you what to do about a proposed file modification, you should use z to 'zap' any changes you are unsure of (keeping your original configuration file), u to 'use' (accept) any changes that look benign (e.g., where only comments have been modified) and m to 'merge' more complicated proposed changes, some parts of which (only) you wish to keep. If in doubt, use z!

In particular, be sure to zap any proposed changes to /etc/conf.d/rngd and /etc/conf.d/xdm!

Note that your kernel and boot firmware will be upgraded as part of this release, so be sure to reboot your RPi3 once you have completed the above process, to start using them.

Once you have done that, congratulations! You are now running on version 1.3.0!

Upgrading for Users on Version <= 1.1.3 of the Image

Users on v1.1.3 or earlier of the image should first temporarily inhibit upgrade to version 1.3.0, by issuing:

pi64 ~ # echo ">=dev-embedded/rpi3-64bit-meta-1.3.0" > /etc/portage/package.mask/rpi3-64bit-meta

and then follow the instructions for upgrade to 1.2.2 given previously.

Once this has been completed successfully, release the temporary mask:

pi64 ~ # rm -v /etc/portage/package.mask/rpi3-64bit-meta

and then follow the instructions given above to complete the upgrade to 1.3.0.

Assets 6

@sakaki- sakaki- released this Oct 4, 2018 · 51 commits to master since this release

This is an incremental release to v1.2.1.

If you would like to upgrade an existing, older version of this image to v1.2.2 (rather than just downloading and using the latest v1.2.2 image directly), please see below.

Changes in this release (see main project page for further details):

  • Migrated the default binary kernel package from bcmrpi3-kernel-bin to bcmrpi3-kernel-bis-bin; the latter uses a slightly tweaked version of the upstream bcmrpi3_defconfig via this weekly autobuild (to which, incidentally, config-change PRs will be accepted for review). The original bcmrpi3-kernel-bin package (and autobuild) will continue to be supported, and indeed you can easily switch to this version if you desire (just run, as root, emerge -av1 sys-kernel/bcmrpi3-kernel-bin && reboot). However, having the ability to tweak the configuration (and possibly kernel source in future) provides additional flexibility. For example, in this release KVM is supported (see this thread) and the image ships with app-emulation/qemu if you want to try it out. Other facilities will be rolled out in future.
  • The RPi3's SoC has a hardware random number generator, added the sys-apps/rng-tools package to start using it for /dev/random.
  • Added the top-level package media-sound/mpd and media-sound/mpc (a music player daemon and client).
  • Added a (first-cut, 64-bit) build of media-libs/raspberrypi-userland, so you can now use vcgencmd etc. Please note that (as with all 64-bit distros for the RPi3 at the moment), MMAL and OpenMax IL features are not supported (see also raspberrypi/userland#460).
  • For those wishing to share files with Windows boxes, net-fs/samba is now bundled (you need to configure and activate it yourself, however, see e.g. these notes).
  • Added a sysctl.d rule to optimize cache usage settings for low memory (per this article).
  • Added a service (rpi3-safecompositor) which turns off display compositing if a high pixel clock is detected (> 1.2175MHz, currently). This is because certain applications, for example LibreOffice v6 Draw and Impress, can cause the whole system to lock-up when used with compositing on under such conditions.
  • Added a startup service (rpi3-ethfix) to workaround some RPi3B+ Ethernet issues via ethtool.
  • Various minor ebuild tidy-ups.
  • All packages brought up-to-date against the Gentoo tree, as of 3 June 2018.

Upgrading from an Earlier Release of the Image

Users downloading this v1.2.2 image directly can of course omit the instructions below; as all settings have been correctly set up for you already.

Users on releases earlier than v1.2.0 should follow the manual upgrade instructions to 1.2.0 below; the final step genup therein will actually bring you to a baseline v1.2.2 now, then read on.

You can easily check your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

If you are already on v1.2.1 or v1.2.0, you can upgrade simply by running genup (or wait for the automated weekly update to do this for you). However, if upgrading in this manner, you may also want to emerge the new top-level applications available (medial-sound/mpd and media-sound/mpc), as these will not be automatically installed for you unless you have set the apps USE flag on the rpi3-64bit-meta package (this flag is not on by default), and you should also set an appropriate configuration for the hardware RNG service: to do so, simply add the following uncommented lines to /etc/conf.d/rngd:

DEVICE=/dev/hwrng
NO_TPM=1
STEP=64
WATERMARK=2048

Then enable and start the service via:

pi64 ~ # rc-update add rngd boot
pi64 ~ # rc-service rngd start

Lastly, if upgrading via genup you may wish to switch your binary kernel package to the new '-bis' version (discussed more above); if so, simply issue:

pi64 ~ # emerge --verbose --oneshot sys-kernel/rpi3-kernel-bis-bin
pi64 ~ # reboot

and from that point forward you'll be using the enhanced kernel (it is also fine to stay with the vanilla bcmrpi3-kernel-bin, this is still supported going forward, you'll just be missing some additional features such as KVM etc.).

Assets 7

@sakaki- sakaki- released this Apr 4, 2018 · 74 commits to master since this release

This is an incremental feature release to v1.2.0: both the RPi3 Model B and B+ are now supported.

If you are already on v1.2.0, you can upgrade simply by running genup (or wait for the automated weekly update to do this for you). However, you may also want to emerge the new top-level application available (fotoxx), as this will not be automatically installed for you unless you have set the apps USE flag on the rpi3-64bit-meta package (this flag is not on by default), and also set an appropriate WiFi regulatory domain in /etc/conf.d/rpi3-wifi-regdom post update (shipped default is "GB").

Users on releases earlier than v1.2.0 should follow the manual upgrade instructions to 1.2.0 below; the final step genup therein will actually bring you to v1.2.1 now.

You can easily check your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta

Changes in this release (see main project page for further details):

  • Added support for the RPi3 Model B+ (the RPi3 Model B remains supported too). Further details of the changes required may be found in this post and on the main project page. Dual-band WiFi, (faster) Ethernet, Bluetooth etc. all work on the B+, so you should be able to seamlessly upgrade to the newer board, should you wish.
  • Migrated to kernel 4.14.y (shipped version: sys-kernel/bcmrpi3-kernel-bin-4.14.31.20180401); this is now the default branch of the RPi3 kernel tree, and is required for RPi3 B+ support. It boots fine on the RPi3 B too. VC4 and audio support is included.
  • Added the top-level package media-gfx/fotoxx-18.01.3 (a digital photo processing program).
  • Migrated to Firefox Quantum (www-client-firefox-58.0.1, plus the mandated dev-lang/rust-1.23.0-r1 and cargo-0.24.0); this should offer significantly faster browsing than the previous version.
  • Added a service to set the WiFi regulatory domain (net-wireless/rpi3-wifi-regdom); the shipped default is "GB", but you can edit the file /etc/conf.d/rpi3-wifi-regdom to change this.
  • Various minor ebuild tidy-ups.
  • All packages brought up-to-date against the Gentoo tree, as of 31 March 2018.
Assets 8

@sakaki- sakaki- released this Jan 25, 2018 · 79 commits to master since this release

This is a significantly different release to the previous v1.1.3, not so much because of the applications it contains (although these have been updated), but because it is built on a newer Gentoo profile (17.0) than before (13.0). Profiles are changed rarely in Gentoo, for they determine how your entire system is built, often in backwards-incompatible ways: for example, in 17.0, the gcc compiler defaults to creating position independent executables (aka, 'pie'), which it did not do before. Accordingly (and as officially recommended), all packages have been rebuilt under the new profile for this image (and the corresponding binhost has also been changed (to avoid confusion), from https://isshoni.org/pi64 to https://isshoni.org/pi64pie).

As such, if you are on any earlier release (v1.0.0 through v1.1.3) and wish to upgrade, running genup is not sufficient - please instead follow the instructions below (users coming straight to this v1.2.0 release of course need take no special action, your system is already set up correctly).

Changes in this release (see main project page for further details):

  • Migrated to Gentoo profile 17.0; all packages rebuilt.
  • A new 17.0 profile binhost (https://isshoni.org/pi64pie) setup, and referenced in /etc/portage/make.conf.
    • The old 13.0 profile binhost (https://isshoni.org/pi64) will be retained for historical interest (at least for a while), but will no longer be autoupdated.
  • The SPI interface is now on by default (in the image itself that is; the sys-boot/rpi3-64bit-firmware package default has not changed). You can easily turn this off again, by editing /boot/config.txt, if you need the affected GPIO lines.
  • The necessary binaries for using your RPi3 to disable the Intel Management Engine are now bundled with the image. Together with the above change, this allows your system to be used to run me_cleaner 'out of the box' (provided you have the correct hardware connector and wires, of course). Users uninterested in this particular application are unaffected, and need take no action.
  • Various ebuild tidy-ups.
  • All packages brought up-to-date against the Gentoo tree, as of 13 January 2018.

Manually Upgrading to v1.2.0

To upgrade from a v1.1.0, v1.1.1, v1.1.2 or v1.1.3 release (regular or Pi-Top variants), perform the following steps (as root) on your RPi3.

Users on earlier v1.0.{0,1,2} releases should follow the manual upgrade instructions to 1.1.0 here, and once that has been done, come back here to upgrade to v1.2.0.

For avoidance of doubt, users coming straight to this v1.2.0 release should not follow the below instructions: your system is already up-to-date.

First, make sure you have at least 2GiB of free space on your RPi3's filesystem (use df -h to check), and that you are using at least version 6.4.0 of gcc (use gcc-config --list-profiles to check; look for the version marked with the asterisk).

Then, if that all looks good, proceed to update your ebuild repositories:

pi64 ~ # emaint sync --auto

You should now find you have a new custom profile available. Switch to it:

pi64 ~ # eselect profile set "rpi3:default/linux/arm64/17.0/desktop/rpi3"

You also need to switch your binary package host ('binhost'), as a new one has been started for the 17.0 profile, to avoid confusion / cross-contamination. To do so, issue:

pi64 ~ # nano -w /etc/portage/make.conf

and modify the line that currently reads:

PORTAGE_BINHOST="https://isshoni.org/pi64"

so it now reads instead:

PORTAGE_BINHOST="https://isshoni.org/pi64pie"

Leave the rest of the file as-is. Save, and exit nano.

Now you can update the core build system. Do not follow the advice in the official news article to rebuild gcc, binutils and glibc individually (if you do, you'll end up building them locally, rather than pulling the new binaries from the binhost, which will take a long time). Instead, issue:

pi64 ~ # emerge --ask --verbose sys-devel/gcc sys-devel/binutils sys-libs/glibc

Check (when the above command prompts you for confirmation) that you will indeed be installing binary packages - this is a good indication you have set things up correctly.

Once this completes, rebuild your entire system for profile 17.0. Almost all of the required 900 or so packages should be available on the new binhost you just switched to, so this should only take a few hours (unless you have added many additional packages to the image yourself). Issue:

pi64 ~ # nice emerge --ask --verbose --emptytree --with-bdeps=y @world

Once it has completed, issue:

pi64 ~ # nice emerge @preserved-rebuild

then:

pi64 ~ # dispatch-conf

to resolve any proposed configuration file changes (for the most part, if you had a reasonably up-to-date 13.0 profile system to start with, typing z to 'zap' (discard) most of these proposed changes should be safe; a lot of packages have been re-installed here, but you want to keep your prior configuration, not roll it back to 'shipped defaults').

NB in particular, if you are using PINN, and dispatch-conf offers to update your /boot/cmdline.txt file, you must press z to discard this change, or your system may fail to boot (PINN modifies this file as part of its install process).

Once done, reboot your system. Then log in again as root, and issue:

pi64 ~ # genup

Once this has completed, congratulations, you have migrated to the (profile 17.0) v1.2.0 release! From this point, the automated weekly genup run should keep your system correctly up-to-date.

Incidentally, you can easily verify your current version at any time, by issuing:

demouser@pi64 ~ $ eix rpi3-64bit-meta
Assets 6
You can’t perform that action at this time.