USB Drives and SMB Servers
In my interview on AppStories, Apple’s software chief Craig Federighi pitched support for external USB drives in Files as “acknowledging the ’90s”, but I think there’s more to the feature than his tongue-in-cheek reference might imply. By opening Files to external USB storage devices and external servers (via the SMB protocol), Apple has come to terms with the reality that users want to treat the iPad Pro like a real computer; like it or not, for many that includes the ability to connect to USB drives, SD cards, or remote servers that contain media assets and work-related documents. So while USB drives might have been all the rage two decades ago before the advent of cloud services, there are still valid use cases for them today; it would be shortsighted for Apple to ignore them – especially after they put a USB-C port in the iPad Pro last year. And so it goes: the new Files app, both on the iPhone and iPad, supports browsing the contents of external USB devices as well as connecting to external servers via SMB. The whole experience resembles the Finder’s classic behavior, but there are some key differences worth noting.
Apple implemented access to external storage devices from Files in the most logical way: USB devices appear as locations in the Files sidebar; because Files is a systemwide layer on iOS that is shared with third-party apps, USB devices are also available in apps (updated for iOS and iPadOS 13) that support the Files picker or document browser.
Given its role as a centralized location for all kinds of documents and integrated apps, it always made sense for Files to be where USB drives would be accessed. However, in bringing this desktop functionality to iOS, Apple had to abstract much of the complexity involved with managing USB drives on a desktop computer.
Let’s start from the types of drives iOS can read: there is no Disk Utility app on iOS, and you can’t get any info about the format of a drive or its partition map. iOS and iPadOS 13 will work out of the box with any drive formatted as APFS, HFS+, FAT, or ExFAT.6 The contents of a drive are displayed with the same UI and features available for any other folder or file provider in the Files app.
Drives can’t be renamed, partitioned, or even manually unmounted when connected to an iPhone or iPad. Which brings me to the other major difference from macOS: while on the desktop it is commonplace – if not downright recommended by the OS – to safely eject a drive from the Finder before physically unplugging it from a computer, Apple has dispensed with this requirement in iOS and iPadOS. There is no ‘Eject’ icon and no error messages: just plug in a drive when you need to access a document on it or copy files to it, then unplug it when you’re done. The system was designed so you don’t have to worry about any other task except accessing files or copying documents from your device onto external storage. But how? And where’s the catch?
First, an assumption. To allow users to yank out a USB drive when they’re done with it, Apple must have re-engineered its USB drivers so that no cached files are ever left pending between the system and a removable drive. My understanding is that external drive support was rewritten from the ground up in user space specifically for iOS and iPadOS, which allowed Apple to avoid using write caching.7
Second, what we do know about iOS’ integration with external drives is that third-party apps can only access their files directly if they support the Files picker or document browser. If an app uses the Files document browser as its root view, is compiled against the iOS 13 SDK, and supports the open-in-place Files feature, it’ll be able to open a document stored on the drive and make changes to it directly without creating a duplicate copy. A good example of this is Jayson, Simon Støvring’s JSON editor for iOS: because the app uses the document browser and can edit documents in-place, it can navigate the contents of an external drive just like any other location of Files, pick a document from a drive, and modify it.
If you’ve been following Apple’s approach to the Files framework over the past few years, I think you know where this is going. Support for external drives sparks immediate comparisons with macOS, where third-party apps can programmatically access (after a one-time permission prompt) the entire contents of an external drive; this is not possible on iOS or iPadOS yet. Third-party apps for iPhone or iPad can only read data from or write to external drives following manual interaction by the user, who has to select a file or pick a destination folder from a Files interface. Unlike macOS, apps on iOS can’t automatically import files from a drive (or back up files to a drive) unless the user has previously selected a file/folder from the external drive with a Files picker.
Here therefore lies Apple’s “catch”: to make dealing with external drives on iOS as seamless as possible, they’ve delegated the task to the Files framework, which comes with clear-cut security restrictions that prevent apps from accessing directories programmatically. By leveraging the Files framework, Apple is absolving developers from the need to think about write caching or issues that may arise with external drives8; as a result, the system is invisible to users (“it just works”), but developers won’t have the freedom they were probably expecting from a feature borrowed from macOS.
This is a classic example of Apple re-imagining an old feature for the new realities of iOS: the system gets rid of baggage while empowering users to accomplish the same tasks. I think Apple largely succeeded in this, and I understand why they designed external drive access around Files.
It was important to explain the design of external drive access in iOS and iPadOS as we, as users, need to set our expectations accordingly. Even though we can now plug all sorts of drives and SD cards (via adapters) into our iPads, we still cannot have apps – such as Backblaze or Hazel – that automatically back up our documents to a drive or import files in specific apps as soon as a drive is plugged in.
That said, I’ve thoroughly enjoyed the ability to plug USB drives and SD cards into my iPad Pro over the past few months. The feature has removed that tiny bit of lingering friction in my iPad workflow that was still forcing me to use a Mac for certain tasks.
For instance, one day I needed to print a PDF document I received via email. We don’t have a printer at home, but there’s a printing shop nearby where we can take a USB pen drive and they’ll print a document for us. Instead of switching contexts and sitting in front of my Mac to do it, I used drag and drop in Files to copy the PDF to the pen drive, which I then unplugged without thinking about it, and that was it. Another example: I own a Sony Walkman music player I use to listen to high-res music albums with my fancy Sony headphones. The Walkman comes with its own local storage (which I don’t use), but also exposes the contents of its microSD card (formatted in ExFAT) when plugged into a computer. For several months, I had to download these albums on my Mac and transfer them to my Walkman using the Finder. With iPadOS 13, I can download albums directly to Files thanks to Safari’s new download manager; then, I can unzip their contents in Files and drop them into the Walkman’s SD storage. No need to leave the couch and go sit at my desk.
On a more serious note, native access to external storage has allowed me to save a considerable amount of time when transferring audio files from an SD card to my iPad Pro. As I detailed in May, I can now use the iPad Pro as a professional podcasting machine, and while the hardware setup is not ideal – and iPadOS 13 unfortunately doesn’t bring any improvements on this front – it is a solution that has worked well for me. The main bottleneck was transferring heavy .wav files at the end of a recording session; I ended up buying a Wi-Fi box that let me transfer files wirelessly to my iPad Pro in a couple of minutes since I couldn’t just plug my audio recorder’s SD card into the iPad Pro. With iPadOS 13, I can put the SD card into Apple’s own adapter and transfer it to my iPad Pro’s local storage in a few seconds.
In big and small ways, native, secure access to external storage devices in Files has enabled me to use the iPad Pro for more tasks and saved me time when podcasting via my mobile setup. This feature was long overdue, and even though it may not be as “open” as certain developers were expecting, it has worked fine for me, and it’s precisely what I wanted from Files.
Along the same lines, Files in iOS and iPadOS 13 sports direct integration with SMB servers. Designed for office environments as well as shared servers in the home, access to servers through the SMB protocol is built into the Files sidebar as a location you can manually connect to.
SMB connections have been modeled after iWork’s existing support for WebDAV servers: after tapping the ellipsis button at the top of the sidebar, you’ll see a ‘Connect to Server’ option that loads a menu where you can enter the server’s address followed by your credentials. Once connected, the SMB server will show up as a mounted location in Files so you can navigate the server’s file structure, preview files, and copy them to your device.
I was able to test SMB integration with my Mac mini, which I have set up as a home server exposing its file system to logged-in users over SMB. For the most part, the functionality works as expected and has allowed me to import files from my Mac mini without using a third-party Files extension. Once I set up access to specific shared folders in macOS’ Sharing preferences, I was able to browse folders on my iPhone and iPad from Files (as well as the Files picker and document browser), preview documents with Quick Look, and transfer them wirelessly to my devices. Network performance was not optimal (it’s not clear whether Apple is using the SMB 1 or SMB 3 protocol) and it’s very possible that my Wi-Fi setup at home could use some adjustments (I’m using an Orbi mesh system), but it does work as advertised.
I can’t help but wish Apple had gone the extra mile with support for external servers in the Files app though. Files does not offer automatic discovery of nearby servers using Bonjour: the app displays a list of recently connected servers, and it remembers your credentials so you don’t have to type your username and password every time you connect, but it doesn’t automatically discover servers, nor does it let you create “bookmarks” for specific paths in the ‘Connect to Server’ window. Furthermore, unlike Anders Borum’s excellent Secure ShellFish file provider extension, Files does not support SFTP servers for secure access over SSH and doesn’t offer controls to debug server connections, specify initial paths, view access logs, or manage files downloaded offline.
When I heard that Apple was extending Files with support for external servers, I hoped to see the same kind of rich functionality I’ve used in Secure ShellFish, or perhaps even FileExplorer Pro; instead, Apple has done the bare minimum work to enable basic access to files and folders over SMB, with no support for other types of connections (not even WebDAV, which continues to be exclusive to iWork). I was hoping I’d be able to stop using third-party extensions to connect to my Mac mini or FTP server over SSH, but that’s not the case with Files in iOS 13.
In an ideal scenario, we would all live in Craig Federighi’s perfect world in 2019, seamlessly sharing files with one another using AirDrop, iCloud links, and the occasional large attachment with Mail Drop. Reality is more complicated than the aspirational workflows of executive meetings at Apple Park though. To this day, people still exchange files with USB pen drives; photographers, vloggers, and other creators still have to access media assets on external drives; employees need to access files stored on shared servers no matter the device they’re using. For all these reasons, and despite the limitations I described above, I’m happy to see Apple acknowledge that the needs of three decades ago are still problems for a lot of folks using iPhones and iPads in 2019. Plus, the ’90s are back in fashion anyway.
The ability to plug in a USB drive or SD card and have it appear in the Files app is an obvious feature, but it breaks so many old assumptions of iOS (file transfers may be slow; access to a directory may be terminated unexpectedly) that it took a while for Apple to get it right. And for the most part, I think they did, building a secure system around the Files app that abstracts the complexities of the desktop while reaching a similar end goal. There’s plenty of room for growth, and I’m keen to see how third-party Files-based apps will adapt to this new world. Extending Files beyond the cloud and local storage was a necessary step, and Apple delivered in iOS and iPadOS 13.
The changes to Files in iOS and iPadOS 13 don’t stop at new views, context menus, or integration with external file sources. Here are a few other highlights from this release.
Document scanner built into Files. The camera’s special scanner mode that launched as part of the Notes update in iOS 11 has been integrated into Files this year. Apple must have realized that enough users were scanning documents in Notes only to manually export them to iCloud Drive, so they’ve added a ‘Scan Documents’ button in the menu available at the top of the Files sidebar.
The document scanner is literally the same feature that’s available in Notes, only you can immediately save scanned PDFs in any Files location, including third-party ones. The document scanner is also available to third-party developers now thanks to the VisionKit framework.
Document browser “improvements”. As I noted earlier this year, if Apple wants to push adoption of the document browser among third-party developers, they ought to listen to feedback from the community regarding performance and customization options. I can’t comment on performance improvements yet as it’s a discussion that involves accessing third-party file storage services (Dropbox, Google Drive, etc.) from the document browser, and those companies haven’t updated their file provider extensions yet. Apple only suggested the performance of the document browser has been improved this year, without getting into any more detail.
As far as customizations to the document browser itself go, developers can now choose to always show file extensions and tweak the text and aspect ratio of the default ‘Create Document’ button. It’s…not much, especially for developers who were hoping for deeper visual tweaks or control over views. I’m curious to see what apps like MindNode and PDF Viewer will do now.
File and folder access. Apple has added a new ‘Files and Folders’ option to Settings ⇾ Privacy that lists all apps that have requested access to a file or folder on the system. This list doesn’t expose details about the type of access for individual apps, but it appears that all apps that have requested some kind of access to an item – whether via the document browser or Files picker – will be displayed in this screen.
You can turn off access to files and folders on a per-app basis; doing so for a document browser-based app, for instance, will outright prevent it from opening files the next time you launch it. I would have liked to see more information about the different kinds of file access, but it’s good to see these privacy enhancements regardless.
Tokenized searches. Apple is taking advantage of the new ability for apps to display tokenized filters and search suggestions in iOS 13’s search bars by letting you search more precisely in Files. The app now supports an array of suggested filters that you can add to your search query by tapping on them as you type (just like you could accept suggestions in Photos last year). There are suggestions for document types (“Images”, “Videos”, etc.), file types (“PNG Images”, “PDF document”, etc.), dates (“2019”), tags, and even shared status (“Is shared with others”). In Files, search tokens support copy and paste, they can be dragged and dropped, and can coexist with plain text queries in the search bar.
Furthermore, unlike iOS 12, iOS 13’s Files app lets you restrict a search to your recent documents or the current folder with a new segmented control:
iOS 13’s search filters are great in that they help you build advanced searches more quickly, but they come with a surprising asterisk attached: they can’t be saved for later. Despite the fact that we can now construct complex searches by combining multiple filters, it’s still not possible to pin searches to Files’ sidebar so that they can be reused later, returning a constantly-updating set of results. How nice would it be if you could create a saved search for “PDF documents tagged Finance from 2019” that didn’t force you to recreate those filters every time you need your tax documents? Now that Apple has built a UI for picking and combining search tokens, saving custom searches feels like the next logical step.
With the Files update in iOS and iPadOS 13, Apple is sending a clear message: they’re now comfortable with offering a powerful, professional file manager inspired by the Mac, but reimagined for iPhone and iPad.
When Apple relaunched the iCloud Drive app as Files in 2017, I had the impression they almost felt bad about having to face reality by offering a file manager on iOS, the platform that had long prided itself on letting go of the shackles of files and folders. As history has proven over the past couple of years though, rethinking file management around a new era of apps was the right sentiment, but it needed more work. With iOS and iPadOS 13 those early timid attempts have blossomed into a desktop-class column view, USB drive access, contextual menus packed with options, integrations with file servers, and more. All of this year’s Files features have been informed by ideas Apple had long perfected with the macOS Finder; in the process of rethinking them for touch, however, the company got rid of the inessential, refined core features, and shipped a stronger file manager that doesn’t feel out of place on the platform.
There’s still work to be done: tagging hasn’t been improved at all in iOS 13; Files still doesn’t display file versions at a system level, nor does it offer Time Machine-like functionality for continuous backups; new features such as external servers or tokenized searches could use many of the finer options available in the Finder. And key functionalities that were announced at WWDC – iCloud-based folder collaboration and file pinning – were mysteriously removed during the beta process, and we don’t know when (or if) they’ll be coming back. Despite all this, however, the foundation laid by iOS 11 in 2017 feels complete now, and the result is a more balanced blend of what’s great about the Mac’s Finder and iOS’ lighter, more intuitive nature.
I don’t need the Files app on my iPad to have all the same advanced functionalities of the Finder for macOS: I just want it to be good enough so I can stop relying on workarounds such as third-party apps and adapters to import and manage my files. This year’s new features don’t compromise the original vision behind Files – an app that can also be a filesystem layer shared between other apps. For the first time though, Files can now behave more like a traditional file manager and less like a glorified launcher for documents, and everyone’s going to benefit from it.
- You’ll have to check whether you’re dealing with a bus-powered drive that can accept power from the host iOS device or an external accessory that requires a separate power source. On iPhone, you’ll have to ensure a drive is externally powered, otherwise you’ll get an error message. ↩︎
I’ve dug into this by creating bookmarks in Scriptable that were pointing to documents located on an external drive. After resolving the bookmark’s path, I saw that the system was using a ‘LiveFiles’ framework to access items stored under
com.apple.filesystems.userfsd, suggesting that external drives are indeed managed inside the user space in the OS. ↩︎
- Imagine if developers had to manually support each individual disk format. ↩︎