Atari AHDI partition support not enabled in Zen kernel... how to add it?

Many years ago I used various flavors of Ubuntu and they all had built-in support for mounting Atari disk partitions, which was extremely convenient for transferring files between Ataris and Linux PCs using SD cards. Ever since I left Ubuntu I haven’t been able to do this. It seems the ability is still in the kernel source but it’s not enabled in most distros. I can see the source files in the Zen repo, but I don’t know how to enable them to recompile them into the kernel. From what I’ve been able to gather, it doesn’t seem to be a kernel module. Here is what I found looking at the source repo:

There’s so little information on this, I don’t really know where to look for help on how to do this… but I’d really like the ability to just pop Atari formatted SD cards into my computer and mount them with Dolphin like I used to.

Any assistance would be appreciated.

System:
Kernel: 6.7.4-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
clocksource: tsc available: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=e47b5a22-506c-4573-b60f-520b613f7533 rw rootflags=subvol=@
quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0 loglevel=3
drm.edid_firmware=DisplayPort-0:/edid/Samsung-EDID-RGB.bin ibt=off
Desktop: KDE Plasma v: 5.27.10 tk: Qt v: 5.15.12 wm: kwin_x11 vt: 2
dm: SDDM Distro: Garuda Linux base: Arch Linux
Machine:
Type: Desktop System: Gigabyte product: Z690 AERO D v: -CF
serial: <superuser required>
Mobo: Gigabyte model: Z690 AERO D serial: <superuser required>
UEFI: American Megatrends LLC. v: F28 date: 12/14/2023
CPU:
Info: model: 13th Gen Intel Core i7-13700K bits: 64 type: MST AMCP
arch: Raptor Lake gen: core 13 level: v3 note: check built: 2022+
process: Intel 7 (10nm) family: 6 model-id: 0xB7 (183) stepping: 1
microcode: 0x11D
Topology: cpus: 1x cores: 16 mt: 8 tpc: 2 st: 8 threads: 24 smt: enabled
cache: L1: 1.4 MiB desc: d-8x32 KiB, 8x48 KiB; i-8x32 KiB, 8x64 KiB
L2: 24 MiB desc: 8x2 MiB, 2x4 MiB L3: 30 MiB desc: 1x30 MiB
Speed (MHz): avg: 897 high: 1100 min/max: 800/5300:5400:4200 scaling:
driver: intel_pstate governor: powersave cores: 1: 1033 2: 800 3: 1100
4: 1099 5: 1100 6: 800 7: 1100 8: 1100 9: 800 10: 800 11: 800 12: 800
13: 800 14: 800 15: 800 16: 800 17: 800 18: 800 19: 800 20: 800 21: 1098
22: 800 23: 1099 24: 800 bogomips: 164044
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Vulnerabilities: <filter>
Graphics:
Device-1: AMD Navi 21 [Radeon RX 6950 XT] vendor: XFX driver: amdgpu
v: kernel arch: RDNA-2 code: Navi-2x process: TSMC n7 (7nm) built: 2020-22
pcie: gen: 4 speed: 16 GT/s lanes: 16 ports: active: DP-1
empty: DP-2,DP-3,HDMI-A-1 bus-ID: 03:00.0 chip-ID: 1002:73a5
class-ID: 0300
Device-2: Razer USA Gaming Webcam [Kiyo] driver: snd-usb-audio,uvcvideo
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.1:8
chip-ID: 1532:0e03 class-ID: 0102
Device-3: AVerMedia USB Device driver: snd-usb-audio,uvcvideo type: USB
rev: 2.1 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.2:9
chip-ID: 07ca:0110 class-ID: 0102 serial: <filter>
Device-4: MacroSilicon USB Video
driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.4:13 chip-ID: 534d:2109
class-ID: 0300
Device-5: Elgato Systems GmbH Game Capture HD60 X
driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB rev: 3.0
speed: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 bus-ID: 2-2.1:4
chip-ID: 0fd9:0082 class-ID: 0300 serial: <filter>
Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4
compositor: kwin_x11 driver: X: loaded: amdgpu unloaded: modesetting,radeon
alternate: fbdev,vesa dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
Screen-1: 0 s-res: 3840x2160 s-dpi: 96 s-size: 1016x571mm (40.00x22.48")
s-diag: 1165mm (45.88")
Monitor-1: DP-1 mapped: DisplayPort-0 model: Samsung serial: <filter>
built: 2021 res: 3840x2160 hz: 60 dpi: 52 gamma: 1.2
size: 1872x1053mm (73.7x41.46") diag: 801mm (31.5") ratio: 16:9 modes:
max: 3840x2160 min: 720x400
API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi
device: 1 drv: swrast surfaceless: drv: radeonsi x11: drv: radeonsi
inactive: gbm,wayland
API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 23.3.5-arch1.1
glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 6950 XT (radeonsi
navi21 LLVM 16.0.6 DRM 3.57 6.7.4-zen1-1-zen) device-ID: 1002:73a5
memory: 15.62 GiB unified: no
API: Vulkan v: 1.3.276 layers: 13 device: 0 type: discrete-gpu name: AMD
Radeon RX 6950 XT (RADV NAVI21) driver: mesa radv v: 23.3.5-arch1.1
device-ID: 1002:73a5 surfaces: xcb,xlib device: 1 type: cpu name: llvmpipe
(LLVM 16.0.6 256 bits) driver: mesa llvmpipe v: 23.3.5-arch1.1 (LLVM
16.0.6) device-ID: 10005:0000 surfaces: xcb,xlib
Audio:
Device-1: Intel Alder Lake-S HD Audio vendor: Gigabyte driver: snd_hda_intel
v: kernel alternate: snd_sof_pci_intel_tgl bus-ID: 00:1f.3
chip-ID: 8086:7ad0 class-ID: 0403
Device-2: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel
pcie: gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 03:00.1 chip-ID: 1002:ab28
class-ID: 0403
Device-3: PreSonus Audio AudioBox USB driver: snd-usb-audio type: USB
rev: 1.1 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-12.3:21
chip-ID: 194f:0302 class-ID: 0103
Device-4: Giga-Byte USB Audio driver: hid-generic,snd-usb-audio,usbhid
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-2:2
chip-ID: 0414:a00b class-ID: 0300
Device-5: Razer USA Gaming Webcam [Kiyo] driver: snd-usb-audio,uvcvideo
type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.1:8
chip-ID: 1532:0e03 class-ID: 0102
Device-6: AVerMedia USB Device driver: snd-usb-audio,uvcvideo type: USB
rev: 2.1 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.2:9
chip-ID: 07ca:0110 class-ID: 0102 serial: <filter>
Device-7: KORG microKEY driver: snd-usb-audio type: USB rev: 1.1
speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-4.3.2:14 chip-ID: 0944:0111
class-ID: 0103
Device-8: MacroSilicon USB Video
driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB rev: 2.0
speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.4:13 chip-ID: 534d:2109
class-ID: 0300
Device-9: Emagic Soft- und Hardware GmbH Unitor8 driver: snd-usb-audio
type: USB rev: 1.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-8.4.2:26
chip-ID: 086a:0001 class-ID: ff00
Device-10: Elgato Systems GmbH Game Capture HD60 X
driver: hid-generic,snd-usb-audio,usbhid,uvcvideo type: USB rev: 3.0
speed: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 bus-ID: 2-2.1:4
chip-ID: 0fd9:0082 class-ID: 0300 serial: <filter>
API: ALSA v: k6.7.4-zen1-1-zen status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: PipeWire v: 1.0.3 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Intel Alder Lake-S PCH CNVi WiFi driver: iwlwifi v: kernel
bus-ID: 00:14.3 chip-ID: 8086:7af0 class-ID: 0280
IF: wlo1 state: up mac: <filter>
Device-2: Aquantia AQC113C NBase-T/IEEE 802.3an Ethernet [Marvell
Scalable mGig] vendor: Gigabyte driver: atlantic v: kernel pcie: gen: 3
speed: 8 GT/s lanes: 2 port: N/A bus-ID: 08:00.0 chip-ID: 1d6a:14c0
class-ID: 0200 temp: 43.0 C
IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Device-3: Intel Ethernet I225-V vendor: Gigabyte driver: igc v: kernel
pcie: gen: 2 speed: 5 GT/s lanes: 1 port: N/A bus-ID: 09:00.0
chip-ID: 8086:15f3 class-ID: 0200
IF: enp9s0 state: down mac: <filter>
Bluetooth:
Device-1: Intel AX211 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-14:24 chip-ID: 8087:0033
class-ID: e001
Report: btmgmt ID: hci0 rfk-id: 1 state: up address: <filter> bt-v: 5.3
lmp-v: 12 status: discoverable: no pairing: no class-ID: 6c0104
Drives:
Local Storage: total: 16.61 TiB used: 1.53 TiB (9.2%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Western Digital
model: WD BLACK SN850X 2000GB size: 1.82 TiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 620331WD temp: 49.9 C scheme: GPT
ID-2: /dev/nvme1n1 maj-min: 259:5 vendor: Western Digital
model: WD BLACK SN770 1TB size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 731100WD temp: 56.9 C scheme: GPT
ID-3: /dev/nvme2n1 maj-min: 259:3 vendor: Western Digital
model: WD BLACK SN770 1TB size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 731100WD temp: 56.9 C scheme: GPT
ID-4: /dev/sda maj-min: 8:0 vendor: HGST (Hitachi) model: HUS724040ALA640
size: 3.64 TiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 7200 serial: <filter> fw-rev: AA70 scheme: GPT
ID-5: /dev/sdb maj-min: 8:16 vendor: HGST (Hitachi) model: HUS724040ALA640
size: 3.64 TiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 7200 serial: <filter> fw-rev: AC50 scheme: GPT
ID-6: /dev/sdc maj-min: 8:32 vendor: SanDisk model: X110 2.5 7MM 256GB
size: 238.47 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 412 scheme: GPT
ID-7: /dev/sdd maj-min: 8:48 vendor: Seagate model: ST2000DM008-2FR102
size: 1.82 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 7200 serial: <filter> fw-rev: 0001 scheme: GPT
ID-8: /dev/sde maj-min: 8:64 vendor: HGST (Hitachi) model: HMS5C4040BLE640
size: 3.64 TiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
tech: HDD rpm: 5700 serial: <filter> fw-rev: A5D0 scheme: GPT
Partition:
ID-1: / raw-size: 1.82 TiB size: 1.82 TiB (100.00%) used: 1.01 TiB (55.3%)
fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 2.1 MiB (0.7%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.01 TiB (55.3%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.01 TiB (55.3%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 1.82 TiB size: 1.82 TiB (100.00%)
used: 1.01 TiB (55.3%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 62.61 GiB used: 753.5 MiB (1.2%)
priority: 100 comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 24
dev: /dev/zram0
Sensors:
System Temperatures: cpu: 39.0 C mobo: N/A gpu: amdgpu temp: 48.0 C
mem: 50.0 C
Fan Speeds (rpm): N/A gpu: amdgpu fan: 0
Info:
Processes: 585 Uptime: 9h 47m wakeups: 0 Memory: total: 64 GiB note: est.
available: 62.62 GiB used: 10.1 GiB (16.1%) Init: systemd v: 255
default: graphical tool: systemctl Compilers: gcc: 13.2.1 clang: 16.0.6
Packages: pm: pacman pkgs: 2230 libs: 603 tools: octopi,paru,yay pm: rpm
pkgs: 0 Shell: fish v: 3.7.0 default: Bash v: 5.2.26 running-in: konsole
inxi: 3.3.31
Garuda (2.6.23-1):
System install date:     2023-05-03
Last full system update: 2024-02-09 ↻
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut
Windows dual boot:       No/Undetected
Failed units:

I checked /proc/config.gz on my -zen and indeed
1050 │ # CONFIG_ATARI_PARTITION is not set
so you’d have to recompile it with that config option or hope some other kernel variant still has it compiled in.

2 Likes

I was going through this forum with your same question https://atari-forum.com/viewtopic.php?t=18697

And came across this. Check it out.

1 Like

I found that too, but that program is QT3. I didn’t feel like trying to get QT3 working on my system… probably better to try to port it to QT5 or 6, but I don’t have time to learn how to do that.

Really sucks, with how often there are kernel updates. I don’t know how much trouble it is to recompile the kernel but it doesn’t sound fun.

Hmm in that case there are several YouTube videos on how to compile your own kernel just to inform you it’s a long process. If you like documentation,

https://wiki.archlinux.org/title/kernel#Compilation

Btw, is there a specific reason for not just using qt3? I mean it’s there in AUR.

https://aur.archlinux.org/packages/qt3

1 Like

Thanks. Yeah it doesn’t look fun.

Well, the truth is qt3 was just the first roadblock and I was expecting a lot more. I haven’t had the best luck compiling Linux programs that old, there’s usually many problems with libraries. On top of that, I’d rather have built-in OS support for the filesystem so I can just use Dolphin or the terminal to move files around.

For now I have an alternate solution to transfer files using the Hatari emulator with disk images that I am dd’ing back and forth to sd cards. Quite convoluted but it works.

Thanks to some advice over on atari-forum.com, I have found a better solution using the Hatari emulator. Instead of dding a disk image on and off the SD card, the much nicer solution is to use a udev rule to give yourself full access to the card reader device and then use that device (in my case /dev/sdk) as the file in the Hatari config for your hard drive image.

For my system my udev rule looks like this:

SUBSYSTEM=="block", ATTRS{idProduct}=="0749", ATTRS{serial}=="000000001539", ACTION=="add", RUN+="/bin/setfacl
-m u:serqetry:rw- /dev/$name"

This is probably the easiest solution. Just pop the card in, start Hatari and the SD card will be mounted (assuming you have everything set up properly with a hard disk driver installed on the emulated Atari), copy files back and forth all you want and the card will still work properly in a real Atari.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.