This article is a follow-up to my article from 2013 and explains how connect a Philips CD-i player to a modern Windows PC and how to back up and restore NVRAM data with CD-i Link. I will cover the other option CD-interlink in the next article.
Back then, I built a null-modem cable which I still use today. Over the years, I’ve used it to connect all my CD-i players with PCs and portable devices to transfer data and for debugging purposes. The cable was built according to the CD-i Nullmodem Cable Specification with a Mini-DIN-8 and a DE-9F connector and works with most of the CD-i players. Some players require additional adapters and/or different connectors: Top-loading players with only one port (e.g. CDI450) require a port splitter; professional CDI60x players require a cable with DE-9F connectors on both ends while LG/DVS players require a cable with a DE-9F and a DB-25F connector. You can find most of the usage scenarios and additional cable and adapters that I’ve built in the CD-i Archives.
Setup and function test
Almost no modern computers have a built-in serial port anymore. A cheap USB to serial adapter will work fine; for example, the DIGITUS DA-70156 with an FTDI FT232RL UART chip. Windows 10 will recognize it instantly and install the required drivers on its own.
Check the Windows device manager to see if the adapter has been installed and note the port number. The standard settings (9600/8-N-1) are exactly how it needs to be set up.
Next, we need a terminal emulation program. Since HyperTerminal is no longer included in Microsoft Windows, we will use the open-source program Tera Term instead. Again, check the settings and then connect to the serial port.
When connected, press and hold the space bar and turn your CD-i player on. If everything works as expected, it should display a low-level test menu.
If not – check cable, adapter and settings again until you can access the low-level test. Then, you can continue with the next section.
CD-i Link (cdilink) is written by CD-i Fan, the author of the CD-i Emulator. It is a fast and versatile command-line tool with plenty of options for all your back up and restore needs. In this article, I will focus on file transfer options only. At the end you will find some more useful options, e.g. to dump ROM files. If you want to explore all options: The program archive includes a comprehensive documentation.
cdilink communicates via the “stub” protocol with CD-i players. Most players already have a subset of this protocol built-in and will download the full program when connected to a host computer where cdilink is executed. Players that don’t have this download subset need to load the program from a disc. I haven’t encountered any player so far that required this disc. In case you need it, the disc image is available here and here.
CD-i Link basics
Run this command first and turn on the CD-i player when prompted: cdilink -p 3 -k
–p[ort] 3 uses the serial port #3. Change it to the port number that you have found in the device manager.
-k[eep] keeps the program active for further commands.
C:\cdilink\>cdilink -p 3 -k CD-i Link version 0.5.2 Please reset your CD-i player! Waiting for stub... Downloading cdistub... 000087CC Ending download stub... CD-i Stub version 0.5.1 Done!
You want to back up a file from the NVRAM but don’t know what the file is called? Use this command to figure it out: cdilink -p 3 -c -di /nvr
-c[continue] continues the session that we started with the first command.
-di[rectory] /nvr displays the names of the files that are stored in the NVRAM.
C:\cdilink\>cdilink -p 3 -c -di /nvr CD-i Link version 0.5.2 Checking for stub... Listing /nvr directory... LSN Name ------ ----- 53 player_shell_settings.prf 189 7th_Guest 1221 csd Done!
You have identified the name of the file. Use this command to copy it to your PC: cdilink -p 3 -c -uc /nvr/7th_Guest
-u[p]c[opy] /nvr/7th_Guest copies the save file of the game The 7th Guest from the CD-i player into the current directory of the host computer.
C:\cdilink\>cdilink -p 3 -c -uc /nvr/7th_Guest CD-i Link version 0.5.2 Checking for stub... Upcopying /nvr/7th_Guest... Done!
To delete the file from the NVRAM, use this command: cdilink -p 3 -c -del /nvr/7th_Guest
-del[ete] /nvr/7th_Guest deletes the file 7th_Guest from the NVRAM of the CD-i player.
C:\cdilink\>cdilink -p 3 -c -del /nvr/7th_Guest CD-i Link version 0.5.2 Checking for stub... Deleting /nvr/7th_Guest... Done!
To copy the file back to the NVRAM, use this command: cdilink -p 3 -c -dc /nvr/7th_Guest
-d[own]c[opy] /nvr/7th_Guest copies the file 7th_Guest from the current directory of the host computer into the NVRAM of the CD-i player.
C:\cdilink\>cdilink -p 3 -c -dc /nvr/7th_Guest CD-i Link version 0.5.2 Checking for stub... Downcopying /nvr/7th_Guest... Done!
Up and down indicate the direction of the transfer. upcopy transfers files from the CD-i player to the host computer while downcopy transfers files from the host computer to the CD-i player.
Files with the same name will be overwritten without confirmation! Files will be deleted without confirmation!
If a file is write-protected (very rare), OS-9 error 000:214 will be displayed.
When you are done copying files, simply turn the player off. Alternatively, you can run this command: cdilink -p 3 -c -e
-e[nd] ends the session and resets the player.
C:\cdilink\>cdilink -p 3 -c -e CD-i Link version 0.5.2 Checking for stub... Ending stub... Done!
CD-i Link advanced
To automate the whole process, you can save a list of files names to a batch file and add upcopy or downcopy options. This will allow you to back up or restore the entire content of the NVRAM with a single command. Here’s a sample batch file to get you started. Note the placement of quotation marks; they are mandatory when a file name contains a space.
cdilink -p 3 -k cdilink -p 3 -c -uc /nvr/7th_Guest cdilink -p 3 -c -uc /nvr/Apprentice cdilink -p 3 -c -uc /nvr/BURNCYCLE_A cdilink -p 3 -c -uc /nvr/cdi_Tetris cdilink -p 3 -c -uc /nvr/Lost_Eden_game1 cdilink -p 3 -c -uc "/nvr/Xplora 1" cdilink -p 3 -c -uc /nvr/csd cdilink -p 3 -c -uc /nvr/player_shell_settings.prf cdilink -p 3 -e
I’ve used batch files like that to fill and compare the contents of the NVRAM while I was working on the NVRAM upgrade.
More useful options:
-roms – this will upload the ROMs of the CD-i player and the DVC into the current directory to the host computer.
-info[rmation] – this will write a text file with lots of information about the CD-i player into the current directory of the host computer.
-i[nteractive] – this will start the interactive command mode. You can enter all options directly as commands.
-q[uit] – ends the interactive command mode.