Pumpkin oats fruitcake

This recipe is sort of an offshoot of this pumpkin bread pudding recipe:


I was thinking of making it again but I wasn’t sure if I had enough bread; I’ve been experimenting with different grains making gluten free quick breads (made with baking powder, not yeast).  Then it occurred to me to just make the Libby’s pumpkin pie filling and instead of using bread cubes use quick oats.  Quick oats are also rolled oats; they haven’t been pre-cooked or anything, just oat grains cut up before they’re rolled so that they’re smaller and cook more quickly.

Special equipment: I’m doing the recipe by weight so you’ll need a kitchen scale. I’m also not specifying a loaf or bundt pan of any particular size so you’ll determine if the fruitcake is done by using a digital thermometer; 190 degrees F.  You can figure out how much batter you’ll need by using a measuring cup and filling a loaf pan with water.  Mine is a little less than 6 cups capacity.

The basic idea is to make the pumpkin pie filling following the recipe on the can of plain pumpkin (with some tweaks which we’ll get to in a sec), add some quick oats, let it rest overnight, add dried fruits and nuts that have been soaking in liqueur, rum, brandy, etc., and then bake.

For the pumpkin pie pie filling two changes are made.  One is to replace some of the evaporated milk with an egg.  If you use the single pie can of plain pumpkin you’ll take out 50 grams of evaporated milk.  Save it or freeze it, or in my case, just drink it.  Replace that evaporated milk with an additional egg; a large egg weights very close to 50 grams.  The other change is to crank up the spices using the amounts from the King Arthur Flour recipe; double the ginger, add some nutmeg, and add some vanilla.  So the updated spice quantities are

1 teaspoon ground cinnamon
1 teaspoon ground ginger
1/4 teaspoon ground cloves
1/4 teaspoon ground nutmeg
2 teaspoons vanilla

Other than changing the eggs from 2 to 3 and decreasing the evaporated milk by 50 grams and the above spice quantities the recipe is the same as what’s on the can.  (Double these for the 2 pie can of pumpkin pie.)

After you make the pumpkin pie filling you weigh it, then divide its weight by 4, and add that amount of quick rolled oats.  For example, the first one I made I used the large 2 pie can and the weight of the filling was 1,980 grams so for that I’d use 495 grams of quick rolled oats.  If you use the 2 pie can I’d recommend dividing it in half unless your mixing bowl is very large; oats are light and 495 grams of oats is a lot.  That means 2 containers or bowls with 990 grams of pie filling in them and 248 grams of quick oats for each.  For a single pie can of plain pumpkin the numbers were slightly different.  A good spatula with a sharp edge is handy for scraping out the bowls and getting every last bit.

After mixing in the oats cover the bowl with plastic wrap or whatever and put it in the fridge for an overnight rest.  If you remember to, stir it every so often.

The next day drain an appropriate quantity of the soaked dried fruits and nuts. Grease and paper the loaf pan. After the final greasing sprinkle it with flour. Let the fruits and nuts drain while you’re working on the loaf pan.  Then mix the fruits and nuts with the pie filling and spoon it into the loaf pan.  Since there isn’t any baking powder in this recipe it won’t rise in the oven. This means that you can fill the loaf pan right up to the top edge.  The “appropriate quantity” of soaked dried fruits and nuts is up to you.  For example, use half as much dried fruits and nuts as batter. For my loaf pan of about 6 cups I could use 4 cups of batter and 2 cups of dried fruits and nuts.  I don’t pack the fruit into the measuring cup so the spaces between it give me some leeway.   (To be honest I’ve been lax and not measuring how much dried fruit and nuts I’m adding.)  If there isn’t enough batter then it won’t hold together so that’s the main concern; beyond that it’s a matter of preference.

I’ve been baking it at 325 degrees F because it takes longer than a regular cake to bake and at 350 the top is a bit too dark.  And at 325 it takes even longer.  At least an hour and 45 minutes, the last one took 2 hours.  So set your timer and when it goes off take it out and insert the digital thermometer and make sure it’s 190 degrees internally.  If not, back it goes for another 15 minutes.  For the last 15 minutes you can turn the oven up to 350 to get the top browner if you’d like.

The end result is very dense and heavy, not like your usual fruitcake. But in my opinion it’s much better than the usual fruitcake. And because it’s so dense I would not do the usual fruitcake thing of brushing it with rum or brandy because you’d probably end up with a sticky and gooey mess.

For soaking the dried fruits I’ve been using liqueur. For liqueur choices the sky’s the limit. I’ve been soaking each fruit in a different liqueur. Cassis is one of my favorites; it’s made from currants. My next batch will use walnuts that have been soaking in Frangelico, which is made with hazelnuts. Previously the walnuts weren’t soaked. If you chop the dried fruit to be at most pea sized it takes about 3 days to plump up. But longer is better.

Letting the batter rest overnight is important so that the oats fully soak up as much as they can. You may be able to use regular oats instead of quick oats, I’ve only been using quick oats.

You don’t have to stick with oats. I made some with a 50/50 combination of teff flour and buckwheat flour.  It came out very dark and tasted great. For the latest one I used corn tortilla flour (masa).  When used in sweet recipes the sugar neutralizes the strong corn tortilla flavor of the masa and it ends up tasting quite nice, and different, but in a good way.  When experimenting with alternatives to oats you’ll need to be careful about how much you use; some will need more or less. For example, with the masa I used 192 grams. The batter should drop from a spoon, but not be as runny as pancake batter, and I suspect that a thicker batter is better.  When experimenting with different flours you can check the batter’s consistency after it’s rested in the fridge for an hour or so and the flour has soaked up the majority of what it’s going to.  But it will be stiffer from being cold so take that into account.  This isn’t a precise chemistry experiment and we’re using a thermometer to test for doneness so as long as you don’t go overboard on it being too runny or stiff it should come out fine.

BeagleBone Black USB hard drive boot setup


I’m assuming that you have a USB hard drive. It must be self powered or getting its power from
a USB hub. Mine is USB 3 plugged into a USB 2 powered hub. A powered hub will have a wall wart that you plug into an electrical outlet. If your hard drive is USB 3 and your regular computer (Linux, Windows, etc.) has a USB 3 port you won’t need the hub while the USB hard drive is plugged into your regular computer.

I’m also assuming that you’ll be using Debian Linux. I agree with William Hermans that it looks to be the most stable and is well documented. It’s been around the longest and it probably has any and every package that you’ll ever need.

We’ll be modifying the uEnv.txt that’s tells the bootstrap software what’s where. I prefer to not fiddle with the provided Linux system that’s in the onboard flash so I’m using a micro SD (µSD) flash card. A 4 gig one is sufficient.

Warning: You may be able to edit the sdcard_setup.sh script on a Windows system and it’ll work. But if you edit the uEnv.txt file on a Windows system it will not work. Windows ends lines differently than Unix and u-boot requires lines that end the Unix way, not the Windows way.

Useful Linux disk commands. Read their man pages.

lsblk: lists all filesystems and drives.
sfdisk, parted: disk partitioning and partition resizing programs.
fdisk: disk partitioning. fdisk -l lists partitions and disk geometry.
mke2fs: initializes Linux filesystems (not needed for the swap partition).
mkswap: sets up a swap partition for swapping

Set up the µSD flash card for booting

Follow the instructions at http://elinux.org/BeagleBoardDebian where it says “Demo Image, Debian Stable (Wheezy)” and it runs the shell script setup_sdcard.sh. This makes a bootable µSD flash card with boot and root filesystems on the µSD card.

With my µSD card in my laptop I used the command

./setup_sdcard.sh --mmc /dev/sdb --uboot bone

On my laptop /dev/sda is the laptop’s drive and /dev/sdb is the µSd card.

After running this the first partition on the flash card is the boot filesystem, in DOS format (one of the FAT flavors, most likely FAT16) and the second filesystem is the root filesystem in Linux ext4 format. After these instructions you’ll continue to use the µSD card’s boot filesystem but its Linux ext4 root filesystem won’t be used because you’ll be using the Linux ext4 root filesystem on the USB hard drive. The reason I’m going this route with an eventually unnecessary and unused root filesystem on the µSD card is that the procedure is easy and straightforward, and it produces an µSD card that’s testable, and as I said previously, I want to leave the onboard flash memory filesystems unchanged.

After the installation finishes put the card in the BBB’s µSD slot (if you were using another computer to set up the card) and boot the BBB (being sure to properly shut down the BBB Linux that may have been running with the halt or shutdown commands). The BBB should sense the µSD card and boot to it instead of the onboard flash memory. You can verify that it’s booted to the µSD card by using the lsblk command. Its output should be

mmcblk1boot0 179:16 0 1M 1 disk
mmcblk1boot1 179:24 0 1M 1 disk
mmcblk0 179:0 0 14.6G 0 disk
+-mmcblk0p1 179:1 0 96M 0 part /boot/uboot
+-mmcblk0p2 179:2 0 14.5G 0 part /
mmcblk1 179:8 0 1.8G 0 disk
+-mmcblk1p1 179:9 0 70.6M 0 part
+-mmcblk1p2 179:10 0 1.7G 0 part

mmcblk0 is the µSD card while mmcblk1 is the onboard flash memory. It shows mmcblk1boot0 and mmcblk1boot1 because it starts booting from the onboard flash memory but switches over to the µSD flash card to finish booting. If your USB hard drive is connected there may be lines for it as well. The important lines are the ones that end with /boot/uboot and /; they say that those two mounts are coming from mmcblk0, the µSD flash card.

Set up the USB hard drive

Before you can set up the USB hard drive you need to make a modified version of the sdcard_setup.sh shell script. Use the diffs below to see what needs to be changed. Make a copy of sdcard_setup.sh and give it the name sdcard_setup_usb.sh.

After you’ve made the modified setup_sdcard_usb.sh you set up the USB hard drive the same way you set up the µSD flash card; plug the drive in and run the setup_sdcard_usb.sh script with the same options, except that if you’re doing this on the BBB the drive’s name is /dev/sda.

Final notes

After changing the uEnv.txt file the µSD card will no longer boot to itself and expects there to be a USB hard drive connected to the BBB. When you update your Linux system on the hard drive, the files on the SD card’s boot partition and Linux partitions won’t get updated unless you do that specifically. I’d keep a copy of the original uEnv.txt on the µSD card’s boot filesystem in case you’d like to boot to the card, for example, to fix something on the hard drive if it becomes unbootable. The ext4 root filesystem on the µSD card is unused when you’ve booted to the USB hard drive.

In some ways editing and running the sdcard_setup.sh script might seem odd, but for me it seemed the most straightforward. Since we know it will give us a good running system on the µSD card we can be reasonably confident that it will do the same for the USB hard drive. I’ve written many shell scripts so it wasn’t scary for me to modify sdcard_setup.sh.

Diffs for setup_sdcard.sh and uEnv.txt

In the following diffs on pastebin, for the normal diff the brown lines are the old lines and the green lines are the new lines with the less than signs preceding the old lines and the greater sign preceding the new or added lines. For the context diffs changed and added lines are in blue and preceded by an exclamation mark. Some added lines are preceded with a plus sign and are green.

Diffs for setup_sdcard.sh are on pastebin at http://pastebin.com/WhqdnAuL with the context diff at http://pastebin.com/8rWBZfqi . The context diff gives 3 lines of context so that you can more easily find where to make the changes.

The first change is to add a line to the lines fed to sfdisk; the added line is for the swap partition, size at 1000 megabytes. Next are the changes for the partition number change; where there is a ${media_prefix}N where N is a 2, it’s changed to 3 for the root partition (1 is the DOS boot partition, 2 is the swap partition, and 3 is the ext4 root partition). Then there’s the added mkswap command, to enable swapping on the second partition. Next are changes and additions to the /etc/fstab file, to use sda3 for the root filesystem and to add sda2 for the swap partition.

Diffs for uEnv.txt are on pastebin at http://pastebin.com/hiL0FU7j with the context diffs at http://pastebin.com/9JwjDb3C .

First we create a variable bootdev for specifying the usb drive. Next we change the root to /dev/sda3. Then we change the load lines to use load usb instead of load mmc and use bootdev instead of mmcdev and mmcpart. Finally we change the uenvcmd and add usb start at the beginning.

The modifications to the uEnv.txt file I figured out from reading William Hermans’ Embedded Hobbyist web page; I wouldn’t have had a clue otherwise.


Robert C. Nelson’s web page for the BeagleBone Black at eewiki (Digi-Key).

Robert C. Nelson’s web page at elinux.org.

William Hermans’ Embedded Hobbyist web pages. The only instructions I’ve found for booting with a USB hard drive.

Texas Instruments Wiki pages.

Some u-boot and potentially other useful stuff.

U-boot home page. Useful stuff under the Documentation link. The Introductory Presentation was informative for me even though it’s marked as quite old. It explains how commands can be stored in environment variables which I had found confusing until I’d read this.

syslinux install

Need to install the gptfdisk package before the syslinux-install_update -i -a -m command will work.

pacman -S gptfdisk

hardwired network

Network interface is enp2s1.

Turn on dhcp:

# systemctl enable dhcpcd@enp2s1.service

boot firmware error message

Install the wireless interface’s firmware with:

pacman -S ipw2200-fw

Or, if you won’t be using the wireless interface, add to /etc/modprobe.d/modprobe.conf

blacklist ipw2200

to get rid of the boot message about failing to install the firmware.

static ip address

Edit /etc/network.d/ethernet-eth0 and comment out the dhcp entry and add this:

DESCRIPTION='A basic static ethernet connection using iproute'
DNS=('' '' '')

resizing the raspi flash card

Before running fdisk I brought the system down to single user and remounted the root partition read-only. In the following the # is root’s prompt.

# systemctl rescue
# mount -o ro,remount /
# fdisk /dev/mmcblk0

Delete the second partition /dev/mmcblk0p2.


Create a new primary partition and use default sizes prompted. This will then create a partiton that fills the disk.


Save and exit fdisk:


Reboot, go single user, and run resize2fs:

# shutdown -r now
# systemctl rescue
# resize2fs /dev/mmcblk0p2

Your main / partition should be the full size of the disk now. Don’t remount the root partition read-only before you run resize2fs; resize2fs fails if it’s mounted read-only.

After running resize2fs reboot, go to single user, remount root read-only, run e2fsck, then reboot to bring the system back up multi-user:

# shutdown -r now
# systemctl rescue
# mount -o ro,remount /
# e2fsck /dev/mmcblk0p2
# shutdown -r now


Get every new post delivered to your Inbox.