First we start by creating a wineprefix and installing our prerequisites from terminal:
WINEARCH=win32 WINEPREFIX=/home/$USER/GarminExpress winetricks dotnet452 vcrun2010 corefonts
WINEARCH=win32 WINEPREFIX=/home/$USER/GarminExpress winetricks win7
Note: You will be prompted during the setup for .NET installation just hit next and finish. Also, I like to seperate win7 after the prerequisites are setup to make sure the wineprefix runs in Windows 7 mode.
With that out of the way we need to download and install our GarminExpress.exe Setup executable. I downloaded mine from https://www.garmin.com/en-US/software/express
Run the GarminExpress.exe file in our wine prefix
WINEPREFIX=/home/$USER/GarminExpress wine explorer /desktop=garmin,1366x768 /home/$USER/Downloads/GarminExpress.exe
Note: If you downloaded the GarminExpress.exe to another location replace it above
Modify your shortcut to be the following command
WINEPREFIX=/home/$USER/GarminExpress wine explorer /desktop=garmin,1366x768 ‘/home/$USER/GarminExpress/drive_c/Program Files/Garmin/Express/express.exe’
Upon Launch you should see this screen which should recognize your Garmin device
My interpretation of https://wiki.winehq.org/Hardware#USB is: If a device has a Windows kernel space driver, wine can pass through device access from the Windows kernel driver to the USB device via libusb. If the application/driver wants to talk to the USB device using winusb.dll: no dice. Mass Storage is a kernel space driver, but not a third party one you can install, but one built into (or shipped with) Windows itself.
I'm wondering if it is sufficient to give wine access to the already mounted drive: https://wiki.winehq.org/Wine_User%27s_Guide#Drive_Settings