Incessant ramblings of a Linux fanatic

0%

Testing, this will be the ocull cemetery post

>

Halo 3

This Christmas the Halo: The Master Chief Collection (MCC) went on sale on Steam. When I was a kid, my parents wouldn’t let me play games rated Mature… naturally I snuck out to my buddy’s house where we played Halo and I learned to love it. A handful of times in my life I thought I’d buy an X-Box to play just Halo, but I never ended up doing it. Today, I’ve sworn off Windows altogether, making my goal even more difficult… but when MCC came out, I wasn’t going to let a handful of DirectX DLL’s stop me.

Turns out Proton 5.13 with the -windowed flag runs Halo as if it were native.

Windowed Flag

But I wanted to play with my younger brother. Last summer we found some old disks for our Original X-Box and beat Halo 1 and 2 together, naturally we had to beat 3 onward together as well… Arby’s got my back after all!

Wrong Arbiter

However, entering a co-op game with him lead to a disconnect about 30 seconds in. For this, I had to install Glorious Eggroll’s Proton 5.21. The installation isn’t too difficult. I then set Steam to explicitly use it in the game properties.

Compatibility

This fix allowed us to play co-op in Halo 3 without interruption for about an hour or so. I’ve heard rumors that you can evade the Easy Anti-Cheat by using HaloBase.net; apparently the check happens at matchmaking and nowhere else. This makes sense… Halo MCC is a fancy launcher made in Unreal Engine 4 that accesses Halo DLL’s ported from X-Box with nearly no alterations.

We have been playing with EAC disabled (this option is available when running Play from the Library – It does not appear if running from system tray).

Hope my Christmas notes help you move forward with slaying more Flood.

Goodman Zone 1

For awhile my brother-in-law had been motivating me to get into photography. I struggled because I wasn’t willing to commit and spend more than $100 as I’m a ruthless penny-pincher. When I heard about Dora Goodman’s fancy new 3D printable camera on r/functionalprint, I spent probably three times that in a heartbeat. Going in I knew hardly anything about photography, so what better way to learn than building a camera from scratch?

If you make an account on her site you can go to your profile and find the STL files along with a parts list in a Google doc. I won’t share these with you here since I think she wants to keep it behind her community.

The Pieces

I live in the States, so it’s a little bit more difficult (and expensive!) to come by the metric parts required to build this thing. So I’ll make your life easy and give you a list of items you’ll need off Amazon:

You’ll also have to go on eBay and look for a Mamiya Universal Press Lens, and a Mamiya RB67 back.

I bought a Pro-SD back instead of a Pro-S back because I found them to be cheaper, more plentiful, and in better condition. If you take this route, be aware it won’t fit the standard body and will require some modifications. I recommend you print the correct modded body from the start rather than retroactively sanding a few millimeters off to make it fit like I did…

I ordered my first lens from Used Photo Pro and was happy with their service. I got the wrong lens out of a noob mistake, but their return process was excellent, and the lens I did receive was in superior condition at a great price.

I later ended up getting a Mamiya Sekor 100mm f/3.5 lens.

Assembly

Getting the metric components is honestly the hardest step. After I printed my parts, I sanded for a few hours. I used PLA plastic and found 400 grain sandpaper worked the best between the 100, 400, and 900 grains I had available.

I used Dora’s provided SVG to cut the decorative wooden panels on my dad’s laser CNC mill. I also had some wood stain on hand, and I wanted a richer color out of my veneer, so I lightly sanded (to remove any splinters) then stained it. The veneer has a 3M adhesive backing, so you can stick it right onto the body.

After I put the veneer panels onto the body, I coated each part in acrylic spray paint to protect it. Finally, I followed Dora’s assembly instructions:

You’ll want to use your light seal foam to surround the film back enclosure on the body; if light gets in it will ruin all your shots with the same effect.

The final touch is the shutter release which simply screws into the lens. It gives off a nostalgic vibe while being quite functional.

Final Product

Goodman Zone 2
Goodman Zone 3
Goodman Zone 4
Goodman Zone 5
Goodman Zone 6

I took some pictures with a roll of ISO 100 Kodak 120mm film my brother-in-law gifted me. Due to COVID-19, I have yet to develop it (he has the kit), but I will post those pictures when that happens.

I’ve been learning about light management too. Since this is not a digital camera and it doesn’t have a viewfinder, you have to do some math to figure out how long to expose your film. You can find a nifty app to do this for you. I found it made the process much easier and enjoyable.

Reasoning

For Christmas this year I received a Raspberry Pi 4, the new board straight out of the UK that boasts 2-3x the compute power of the last model. I’ve been wanting to take a crack at it, but I knew I wanted to ditch Raspbian, the stock OS, right away.

Why? Well, the Pi 4 is a 64-bit embedded system. Actually, the Pi 3 was also 64-bit, but Raspbian has always been a 32-bit operating system for reasons of stability and backwards compatibility… but I’m a power user! Let’s use it to it’s full potential, shall we?

For awhile I debated on installing Arch Linux ARM, but I eventually landed on Alpine Linux. It’s a prime choice for this because it’s blisteringly lightweight, offers more packages than Arch Linux ARM, has loads of packages compiled for aarch64, and the most recent version (v3.11 as of writing) added explicit support for the Pi 4. That being said, I recommend using the edge branch for the most up to date and in-testing packages.

Equipment

If you’ve never worked on a Pi before, you should check out CanaKit’s offerings. In the case of the older Pi’s, CanaKit was always a good idea because the power supply it comes with has enough amperage to keep the Pi from starving. If you use any old wall-wart PSU, you’d get a lightning bolt icon telling you that the Pi wasn’t getting enough power. In the case of the Pi 4, the USB C port is not up to spec and actually needs an even more specific PSU; if the wrong one is used, it could damage the board.

lightning bolt

The Pi is particularly sensitive about the quality of SD card you put in it since it makes a ton of small reads and writes. A class 10, UHS 3 micro SD card is what you really want for uninterrupted performance, and it’s not even that much more expensive.

The Raspberry Pi 4 CanaKit ensures you won’t get the wrong parts, and at a great price too. It even comes with a slick case, a power switch, a quiet CPU fan, and passive coolers on top of all the stuff you must have.

The SD card reader that comes with the CanaKit is a tad subpar, however. If you find yourself frequently tinkering on SD cards, I highly recommend getting Sabrent’s USB 3.0 SD card reader. It offers superior performance, and you don’t have to struggle to remove the card every time.

Installation

Getting Alpine Linux installed on a Pi persistently isn’t a supported goal by the Alpine team yet. We’ll have to take a few detours to get this working.

Setup

Grab the tarball from Alpine’s website for Raspberry Pi (1, 2, 3, or 4) and the aarch64 architecture. Grab your SD card and format it using an MBR partition scheme (the Pi will not boot with GPT partitions). You’ll need to make two partitions:

  • 500 MB, FAT32, for booting
  • The rest, EXT4, for your system installation

Extract the tarball into the FAT32 partition, then add this file to the root of the partition:

usercfg.txt
1
2
3
4
dtparam=audio=on
disable_overscan=1
dtoverlay=vc4-fkms-v3d
gpu_mem=256

Insert the SD card, power up the Pi, and login. The default credentials are root and no password. Start up and complete a regular install using setup-alpine.

You’ll want to enable a service to automatically reconnect to the wifi network, so run rc-update add wpa_supplicant boot. We will want to commit these settings to the boot partition, so execute lbu commit -d to save them. Then reboot.

When you’re back online, we should update our system and save it: apk update && apk upgrade. Commit that once more and reboot: lbu commit -d && reboot.

Making it Persistent

The reason why persistent installations are not supported on the Pi is because ARM devices don’t use conventional BIOSes. Therefore, SYSLinux or GRUB won’t work. Instead we’re going to use our custom FAT32 boot partition (mmcblk0p1) to alleviate this problem.

1
2
3
mkdir -p /mnt/system
mount /dev/mmcblk0p2 /mnt/system
setup-disk -o /media/mmcblk0p1/$HOST.apkovl.tar.gz /mnt/system

You’ll probably get some warnings about SYSLinux here – ignore them.

Now we’re going to setup our mount points. Edit fstab on the system partition and add these lines:

/mnt/system/etc/fstab
4
5
/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0
/media/mmcblk0p1/boot /boot none defaults,bind 0 0

In order to get the kernel to properly load up our new root filesystem, we’ll have to pass a new parameter to it. Append this to cmdline.txt after remounting with mount -o remount,rw /media/mmcblk0p1:

/media/mmcblk0p1/cmdline.txt
1
<Your kernel parameters> root=/dev/mmcblk0p2

You may now reboot into your fresh system installation.

Bringing up the Desktop

Alpine actually has a little known package for quickly setting up a desktop environment, but it needs a few tweaks. The alpine-desktop metapackage includes xfce4 along with a few other tools and critical packages like xorg-server. You’ll also need to replace mdev with udev for proper input support, and install some video drivers.

1
2
3
4
5
6
7
8
9
10
11
12
# Install desktop packages.
apk add alpine-desktop mesa-dri-vc4 mesa-dri-swrast mesa-gbm xf86-video-fbdev libinput xfce4-terminal firefox sudo
setup-xorg-base

# Add a user for yourself.
adduser -g "Max O'Cull" max

# Uncomment this line: %wheel ALL=(ALL) ALL
visudo

# Add yourself to the group "wheel" for sudo access.
addgroup max wheel

Add this xorg.conf to properly connect the video drivers:

/etc/X11/xorg.conf
1
2
3
4
Section "Device"
Identifier "default"
Driver "fbdev"
EndSection

reboot and when you log back in, run startx. You’ll notice XFCE4 is a bit sluggish. This is because the compositor is enabled and is bogging down the GPU. Under XFCE’s settings, find Window Manager Tweaks and disable compositing.

Extra Credit

Congratulations, you’ve got a full 64-bit operating system that’s extremely lightweight, with up to date packages. Maybe you’re bored of a traditional desktop? Try installing these:

1
sudo apk install kodi kodi-gbm retroarch

Then running either sudo kodi or sudo retroarch (necessary to properly connect to X11 and Dbus).

Kodi

Kodi should say you’re using OpenGL ES 3.1 (under Settings > System Information > Video) if your graphics are setup correctly.

Retroarch

You’ll need to install cores to do anything useful. Normally you would go to Settings > User Interface > Views and enable Show Core Updater, however, my suspicion is that those cores are not compiled for aarch64. Instead, we’ll have to install them via APK’s:

1
sudo apk add libretro-nestopia libretro-desmume libretro-mgba libretro-mupen64plus