How to Use a GL.iNet Flint 3 USB SSD as a Native Apple Time Machine Backup Target

Overview

How to Use a GL.iNet Flint 3 USB SSD as a Native Apple Time Machine Backup Target

Other models should work as well, I just wrote this up based on the current flagship but I have tried it on Puli AX and Slate 7 Pro as well

If you have a GL.iNet Flint 3 and a spare USB SSD, you can turn that router into a native Apple Time Machine backup destination. No Synology. No TrueNAS. No extra Mac mini sitting in a closet. Just the Flint 3, its built-in Samba server, and the correct hidden UCI options.

The important part is this: do not manually edit /var/etc/smb.conf and expect it to stick.

That file is generated by GL.iNet every time Samba restarts. Manual changes disappear. The correct fix is to enable the Time Machine options already built into the GL.iNet/OpenWrt Samba init script.

This guide is based on a real Flint 3 setup where Finder could mount the SMB share, but macOS Time Machine refused to show it as a backup disk until the hidden macos and timemachine UCI flags were enabled.


What You Are Building

You are going to configure your Flint 3 so that a USB SSD attached to the router appears in macOS as a valid Time Machine destination.

The final setup looks like this:

1MacBook / iMac
2    ↓ SMB over LAN/Wi-Fi
3GL.iNet Flint 3
4    ↓ USB
5External SSD used for Time Machine

This is not a full NAS replacement, but for one or two Macs at home it is a very clean use of hardware you may already own.


Tested Environment

This guide was tested with:

Item Value
Router GL.iNet Flint 3 / GL-BE9300
Samba version 4.18.8
Storage USB SSD attached to Flint 3
Share name disk1_part1
Mount path /tmp/mountd/disk1_part1
Protocol SMB
macOS backup system Time Machine

Your share name may be different, but the process is the same.


Why Netatalk/AFP Is Not the Right Answer

You may find old OpenWrt guides that recommend Netatalk and AFP for Time Machine. That made sense years ago, but modern macOS Time Machine expects SMB-based backup targets.

Current Samba has Apple compatibility support through the fruit VFS module. Your Flint 3 firmware already includes that path. The trick is enabling it properly through UCI so the GL.iNet-generated Samba config survives service restarts and reboots.


The Problem With Editing smb.conf

A lot of tutorials tell you to add this directly to a Samba share:

1fruit:time machine = yes
2fruit:time machine max size = 1000G

That is the right idea, but the wrong place on GL.iNet firmware.

On the Flint 3, this file:

1/var/etc/smb.conf

is generated by the Samba init script. If you edit it manually and then run:

1/etc/init.d/samba4 restart

your custom Time Machine lines disappear.

That is exactly why Finder may mount the share successfully, while Time Machine still says the volume is unsupported or never shows it as a backup destination.


Step 1: Set Up Network Storage in the GL.iNet Web Interface

First, plug your USB SSD into the Flint 3.

In the GL.iNet admin panel, go to:

1Applications → Network Storage

Enable SMB sharing and make sure your drive is mounted.

You should have a share similar to:

1disk1_part1

Create or confirm an SMB user with read/write permissions.

Before touching SSH, verify the share works from Finder:

1Go → Connect to Server

Then connect to:

1smb://192.168.8.1/disk1_part1

Use your router's LAN IP if yours is different.

If Finder cannot mount the share, fix that first. Time Machine will not work until basic SMB access works.

You can use your tailnet IP as well but if you have your subnet advertised via tailscale even when your remote you should be able to hit the real local IP


Step 2: SSH Into the Flint 3

SSH into the router:

1ssh root@192.168.8.1

If your Flint 3 is not using the default GL.iNet subnet, replace 192.168.8.1 with your router's actual LAN IP.


Step 3: Confirm Samba Version

Check your Samba version:

1smbd -V

On the tested Flint 3, the output was:

1Version 4.18.8

That version is new enough for SMB Time Machine support.


Step 4: Identify the Samba Share

Run:

1uci show samba4

Look for your sambashare section.

Example:

1samba4.@sambashare[0].path='/tmp/mountd/disk1_part1'
2samba4.@sambashare[0].name='disk1_part1'
3samba4.@sambashare[0].read_only='no'
4samba4.@sambashare[0].guest_ok='no'

In this example, the share index is:

1@sambashare[0]

If you have multiple USB shares, make sure you modify the correct one.


Step 5: Enable the Hidden macOS Compatibility Flag

This is the part most people miss.

The GL.iNet Samba init script checks for a UCI option named:

1macos

If this is not set to 1, the script skips the Apple-specific Samba share options entirely.

Enable it:

1uci set samba4.@samba[0].macos='1'

Step 6: Enable Time Machine on the Share

Now enable Time Machine for the actual USB share.

For the first Samba share:

1uci set samba4.@sambashare[0].timemachine='1'

Then set the maximum size.

Example for a 1 TB Time Machine limit:

1uci set samba4.@sambashare[0].timemachine_maxsize='1000'

The GL.iNet Samba script appends G, so 1000 becomes:

11000G

Common values:

Desired Limit Command Value
500 GB 500
1 TB 1000
2 TB 2000
4 TB 4000

Step 7: Commit and Restart Samba

Save the UCI configuration:

1uci commit samba4

Restart Samba:

1/etc/init.d/samba4 restart

Step 8: Verify the Generated Samba Config

Now verify that the generated config actually contains the Time Machine settings:

1grep -A25 "\[disk1_part1\]" /var/etc/smb.conf

Replace disk1_part1 with your actual share name if different.

You should see something like:

 1[disk1_part1]
 2        path = /tmp/mountd/disk1_part1
 3        valid users = @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-user
 4        read only = no
 5        guest ok = no
 6        write list = @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-w
 7        read list = @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-r
 8        fruit:encoding = native
 9        fruit:metadata = stream
10        fruit:veto_appledouble = no
11        fruit:time machine = yes
12        fruit:time machine max size = 1000G

If those fruit: lines appear, the Flint 3 is now advertising the share correctly for Apple Time Machine.


Step 9: Add the Disk in macOS Time Machine

On your Mac, open:

1System Settings → General → Time Machine

Click:

1Add Backup Disk

Your Flint 3 SMB share should now appear as a valid Time Machine destination.

Select the share, enter your SMB credentials, and start the backup.


Complete Command Block

For the common case where the USB share is @sambashare[0] and you want a 1 TB backup limit:

1uci set samba4.@samba[0].macos='1'
2uci set samba4.@sambashare[0].timemachine='1'
3uci set samba4.@sambashare[0].timemachine_maxsize='1000'
4uci commit samba4
5/etc/init.d/samba4 restart
6grep -A25 "\[disk1_part1\]" /var/etc/smb.conf

Why the options Field Does Not Work

You might be tempted to try:

1uci add_list samba4.@sambashare[0].options='fruit:time machine = yes'

That looks logical, but on the tested Flint 3 firmware it does not work.

The option is stored in /etc/config/samba4, but the GL.iNet Samba generator ignores it when writing /var/etc/smb.conf.

The correct settings are:

1uci set samba4.@samba[0].macos='1'
2uci set samba4.@sambashare[0].timemachine='1'
3uci set samba4.@sambashare[0].timemachine_maxsize='1000'

Those are the options the init script actually reads.


What the Init Script Is Doing

The Flint 3 Samba init script includes logic similar to this:

1config_get_bool MACOS "$1" macos 0
2config_get_bool timemachine "$1" timemachine 0
3config_get_sane timemachine_maxsize "$1" timemachine_maxsize

Then later:

 1if [ "$MACOS" -eq 1 ]; then
 2    vfs_objects="catia fruit streams_xattr $vfs_objects"
 3    printf "\tfruit:encoding = native\n"
 4    printf "\tfruit:metadata = stream\n"
 5    printf "\tfruit:veto_appledouble = no\n"
 6
 7    if [ "$timemachine" -eq 1 ]; then
 8        printf "\tfruit:time machine = yes\n"
 9        [ -n "$timemachine_maxsize" ] && printf "\tfruit:time machine max size = %sG\n" "${timemachine_maxsize}"
10    fi
11fi

That means the feature was already there. It was just not exposed in the GL.iNet GUI.


Troubleshooting

Finder can mount the share, but Time Machine does not show it

Make sure macos is enabled globally:

1uci show samba4 | grep macos

Expected:

1samba4.@samba[0].macos='1'

Then make sure Time Machine is enabled on the share:

1uci show samba4 | grep timemachine

Expected:

1samba4.@sambashare[0].timemachine='1'
2samba4.@sambashare[0].timemachine_maxsize='1000'

The fruit: lines disappear after restart

That means you edited /var/etc/smb.conf directly.

Do not manually edit the generated file. Use UCI:

1uci set samba4.@samba[0].macos='1'
2uci set samba4.@sambashare[0].timemachine='1'
3uci set samba4.@sambashare[0].timemachine_maxsize='1000'
4uci commit samba4
5/etc/init.d/samba4 restart

Time Machine says the operation is not supported

That usually means macOS can mount the SMB share, but the Samba share is missing the Time Machine fruit options.

Verify:

1grep -A25 "\[disk1_part1\]" /var/etc/smb.conf

You need:

1fruit:time machine = yes

under the share.

I have more than one USB share

List the Samba config:

1uci show samba4

Find the correct @sambashare[x] index and use that instead of @sambashare[0].

Example:

1uci set samba4.@sambashare[1].timemachine='1'
2uci set samba4.@sambashare[1].timemachine_maxsize='1000'

Should I use Netatalk?

No, not for this setup. Modern macOS Time Machine works properly over SMB when Samba is configured correctly. The Flint 3 already has the needed Samba support.


Here are practical hardware options for this setup.

Router

  • GL.iNet Flint 3 / GL-BE9300

SSD Options

  • Samsung T7 or T9 portable SSD
  • Crucial X9 or X10 portable SSD
  • SanDisk Extreme Portable SSD
  • Any reliable USB 3.x SSD enclosure with a SATA or NVMe SSD

SSD Sizing

Number of Macs Suggested SSD Size
1 MacBook Air / Pro 1 TB
1 desktop Mac with lots of data 2 TB
2 Macs 2–4 TB
Multiple Macs Use a real NAS instead

Internal Linking Suggestions

If publishing this on TechRelay, link this guide to related posts such as:

  • GL.iNet VLAN trunk setup
  • GL.iNet Speedtest CLI install
  • Tailscale exit node DNS leak fixes
  • OpenClash on GL.iNet routers
  • Using GL.iNet routers as homelab edge devices

Suggested anchor text:

1GL.iNet router storage setup
1Time Machine over SMB
1Flint 3 homelab router

FAQ

Can other GL.iNet Routers be used for Time Machine?

Yes. Current firmware with Samba 4.18.8 can expose a USB SSD as a valid Apple Time Machine SMB target when the hidden macos and timemachine UCI options are enabled.

Does this survive reboot?

Yes. The settings are stored in /etc/config/samba4 through UCI, so they survive Samba restarts and router reboots.

Why not just edit /var/etc/smb.conf?

Because GL.iNet regenerates that file. Manual edits disappear after restarting Samba.

Does this require Netatalk?

No. This setup uses SMB and Samba's Apple compatibility features.

What does timemachine_maxsize mean?

It sets the advertised Time Machine maximum size in gigabytes. For example, 1000 becomes 1000G.

Can multiple Macs use the same share?

They can, but it is cleaner to create separate shares or quotas for each Mac. For serious multi-Mac backups, use a dedicated NAS.


Final Thoughts

This is one of those cases where the feature is already built in, but hidden just enough to make the setup painful.

The GL.iNet Flint 3 already ships with a modern Samba package and the startup script already knows how to generate Time Machine-compatible configuration. The missing piece is enabling:

1uci set samba4.@samba[0].macos='1'
2uci set samba4.@sambashare[0].timemachine='1'

Once those are set, the USB SSD attached to the Flint 3 appears as a proper macOS Time Machine target.

For a home lab, travel router setup, or small office that needs simple Mac backups without a dedicated NAS, this is a solid little win.

So Long and Thanks for All the Fish!