Using BU-353 GPS Receiver with MacMini M-series

Articles about GPS, GLONASS, GALILEO, WAAS and other satellite navigation systems
jimh
Posts: 13285
Joined: Fri Oct 09, 2015 12:25 pm
Location: Michigan, Lower Peninsula
Contact:

Using BU-353 GPS Receiver with MacMini M-series

Postby jimh » Sat Aug 23, 2025 8:08 am

Recently I upgraded one of my Apple computers to a MacMini M4. I was curious if I could continue to use the GlobalSAT BU-353 GPS receiver with USB connection with this new desktop computer, which requires the most recent MacOS version and is using the most recent Apple silicon CPU chip, the M4.

As noted above, using the BU-353 had previously been very sensitive to the USB driver that was loaded in the MacOS, and I had to resort to buying a special Prolific chip driver. Of course, that driver was of no use with the completely different Apple CPU chip and a completely different version of the operating system.

While initially very skeptical, I was delighted, however, to discover that the latest MacOS version for the M4 (and possible other M1, M2, or M3) systems was quite pleased to connect to the BU-353 via a USB port.

Because the BU-353 had been sitting in a drawer for several years, the initial time to a position fix solution was quite length, probably lengthened by attempting to use it indoors during a heavy rain storm. After about an hour of monitoring the data output from the GPS receiver on a serial port on my MacMini M4, I noted that the receiver had acquired ten GPS satellites, and was using eight of them to develop a position fix solution.

Thus bravo to Apple for providing a robust serial port driver for Prolific chips that allows this somewhat ancient GlobalSAT GPS receiver to continue to be useful in the MacOS environment.

jimh
Posts: 13285
Joined: Fri Oct 09, 2015 12:25 pm
Location: Michigan, Lower Peninsula
Contact:

Re: Using BU-353 GPS Receiver with MacMini M-series

Postby jimh » Sun Aug 24, 2025 1:43 pm

Getting NMEA-0183 data from the BU-353 via USB can be a bit tricky. Some sort of serial terminal application is needed. While you can buy a MacOS terminal application from various developers, the MacOS already has a terminal application included. Using the built-in terminal app can be a bit challenging for some Mac users. Below I will explain my method.

The first step in connecting to any USB device is to determine how it has connected to the operating system and what port it is using. As the underlying operating system for the MacOS has been Unix, the low level elements of MacOS use Unix system methods.

Assuming that a particular MacOS computer has a proper USB driver to connect to the BU-353 and its Prolific USB hardware, you can discover where it has connected by using the System Report feature of MacOS.

To open a System Report, you first must go to the Apple Menu (always in the upper left of the top menu bar) and select the option "About this Mac." A new window will open with information about the MacOS version, looking something like Figure 1 below:

AboutThisMac.jpg
Fig. 1. The "About this Mac" window.
AboutThisMac.jpg (45.18 KiB) Viewed 1970 times

In the window, click on the choice "System Report..."

Another new window will open that contains a very comprehensive report about every element of the operating system. Under the Hardware tab, locate the USB option. This will show the USB Device Tree. Click on the entry for USB-Serial Controller. There you should find data about the BU-353, however the specific identification "BU-353" will not be there. Instead you will find a entry of
    Product ID:	0x2303
    Vendor ID: 0x067b (Prolific Technology, Inc.)
    Version: 3.00
    Speed: Up to 12 Mb/s
    Manufacturer: Prolific Technology Inc.
    Location ID: 0x02100000 / 9
    Current Available (mA): 500
    Current Required (mA): 100
    Extra Operating Current (mA):
This is the BU-353 GPS and its USB connection point, and it should look something like this in the report screen:

SystemReportUSBatM1RearPanel.jpg
Fig. 2. The USB Device Tree entry for the BU-353 GlobalSat GPS receiver.
SystemReportUSBatM1RearPanel.jpg (81.11 KiB) Viewed 1970 times

Now that we have a hint to the BU-353 connection point via USB we can try to connect to it.

The next step it to launch the MacOS Terminal.app, which can be found in the Utilities subfold in the Applications folder.

In the Terminal app's window, enter the following command:

ls /dev/cu*

This Unix command instructs the OS to go to the directory /dev/ and show a list of files there that match the string "cu*" where the "*"means any character. (The "cu" is a Unix term from way back in the days of telephone modems, and "cu" was a "call up" device.)

The results of that command should look something like this:

ls /dev/cu*
/dev/cu.Bluetooth-Incoming-Port /dev/cu.wlan-debug
/dev/cu.usbserial-210

The first two devices are normal elements in the MacOS, and the third device is thus the BU-353 GPS receiver. Now we know the exact name of the BU-353 USB port location; it is at "/dev/cu.usbserial-210"

Note that it is most easy to identify the BU-353 receiver if it is the only USB device connected, other than a keyboard and a mouse.

The final step is to tell the Terminal app to open the unix utility application "screen" at 4800 baud and to connect to the cu.usbserial-210 port. The command is

screen /dev/cu.usbserial-210 4800

You should begin to see a stream of NMEA-0183 sentences from the BU-353, where each line begins with the $GP string. Here is a typical sample:

$GPGGA,121356.000,4507.0566,N,08536.6726,W,1,08,1.2,183.8,M,-35.4,M,,0000*64
$GPGSA,A,3,21,29,11,12,09,06,25,05,,,,,1.9,1.2,1.5*3B
$GPGSV,3,1,09,21,74,084,38,05,61,212,37,11,55,066,39,29,38,307,32*7D
$GPGSV,3,2,09,25,33,251,35,12,28,215,29,06,18,080,27,09,15,040,25*7E
$GPGSV,3,3,09,13,06,156,*46


Now--VERY IMPORTANT--to halt the screen process you must use a very non-intuitive method:

With the screen process the front window of the Terminal app, type:
CTRL-A CTRL-\ (backslash)
and answer the prompt with "y"

If you do not properly exit the screen process, it will continue to run in the background, and the next time you will get an error "No PTY available" when you try to connect to that USB port. (PTY means pseudo-terminal with terminal referred to as a TTY or teletypewriter.) If this occurs use the Activity Monitor app to kill any screen (all lower case) processes that are still running.

jimh
Posts: 13285
Joined: Fri Oct 09, 2015 12:25 pm
Location: Michigan, Lower Peninsula
Contact:

Re: Using BU-353 GPS Receiver with MacMini M-series

Postby jimh » Mon Aug 25, 2025 8:31 am

To make the process of launching the Terminal app and creating a screen window, I use an AppleScript.

The script allows the user to select the USB port and the baud rate, then launches the Terminal app, then starts a screen process, setting the screen into to certain width and row, background and font color, and then puts up dialog box to alert the operator about the need to stop the screen process using a particularly odd method.

Changing the background and font color makes the screen window look different than the terminal window, which helps to keep the two processes separated in the user's mind.

I also have set ScriptEditor app preferences in the General Tab to the option to "Show Script menu in Menu Bar."

The text of the AppleScript is shown below in text. To create a script, copy and paste the text into a blank new script window, and then from the Script menu select the Compile option. The text will then be parsed and the text elements will change colors to make reading the script more intuitive.

APPLE SCRIPT text begins on the next line:
    --An AppleScript to launch Terminal app and call for a screen process
    --Written by Jay Hebert and modified by Jim Hebert

    set baudList to {1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}

    set baudRate to (choose from list baudList default items {4800})

    tell application "Terminal"

    set serialDevices to (do shell script "ls /dev/cu*")

    set theDeviceList to (paragraphs of serialDevices) as list

    set theDevice to (choose from list theDeviceList)

    do script "screen " & theDevice & " " & baudRate

    set number of rows of window 1 to 24
    set number of columns of window 1 to 80
    set background color of window 1 to "black"
    set normal text color of window 1 to "green"
    set custom title of window 1 to "GPS OUTPUT"


    display dialog "To quit your screen process type CTRL-A then CTRL-backslash

    --IMPORTANT--

    If you get error 'No PTY available' it means you did not properly terminate the screen process.

    Use Activity Monitor to kill the screen processes still running."

    end tell
---end of text of Apple Script---

jimh
Posts: 13285
Joined: Fri Oct 09, 2015 12:25 pm
Location: Michigan, Lower Peninsula
Contact:

Re: Using BU-353 GPS Receiver with MacMini M-series

Postby jimh » Mon Aug 25, 2025 12:41 pm

Using the BU-353 with the MacMini M4 and MacOS15.6 adds a few more wrinkles.

The location of the System Information app that generates the System Report has moved, and is now located in the path

Applications(folder) --> Utilities(folder)---> System Information (app).

The MacMini M4 computer does not have any native USB ports, so I am using an auxiliary dock, a Satechi MacMini M4 model, which creates three new USB ports. The BU-353 GPS receiver will be connected to one of the three USB ports on the Satechi dock, so you must look for it there. The USB tree below shows the information and Port ID.

MacMiniM4_USB_Tree.png
Fig. 3. The USB port device tree on a MacMiniM4 with Satechi dock. The GlobalSat BU-353 appears as a Prolific driver device with product ID 0x2303 and location ID 0x00123000 / 7
MacMiniM4_USB_Tree.png (168.11 KiB) Viewed 1926 times


The location name of the BU-353 device's USB port has changed,and it will now appear in the /dev/cu directory as

/dev/cu.usbserial-1230

jimh
Posts: 13285
Joined: Fri Oct 09, 2015 12:25 pm
Location: Michigan, Lower Peninsula
Contact:

Re: Using BU-353 GPS Receiver with MacMini M-series

Postby jimh » Thu Aug 28, 2025 9:20 am

Another glitch with the M4 MacMini and its MacOS 15.6.1 (just updated) is the Terminal app does not work with my older Applescript regarding setting the window background and font colors, nor in setting the number of rows and width of the window. I am working on a better Applescript for the newest Terminal app.