Getting an Arduino to read and store data off a DVD with a USB DVD Drive

Wow, some gross assumptions and lack of understanding there.

At least some of us are professional engineers, and many very experienced hobbyist experts in the use and capabilities of Arduino, and they might also not appreciate being talked down to by someone who does not know what they are talking about.

However, I appreciate your defense of the students you are using as free labor. It does appear the problem does not lie with them, but their supervisor. They might experience less stress, if the supervisor didn't give them impossible tasks.

3 Likes

A professional wouldn’t be wasting time tearing down students asking for help on an online forum. I’m also not their supervisor. I’m a sponsor. I provide funding and resources. We paid for two 3D printers for them to test on (which the program gets to keep) and my time is very expensive.

I have deleted the off topic replies. All further replies on this topic will be exclusively dedicated to providing @mrbobjohnson with technical assistance. If you don't want to do that, then move on.

If anyone wants to discuss their opinions of university internship programs, you are welcome to open a separate topic for that purpose.

4 Likes

I've done a bit more research and took apart a slim DVD-RW drive. Tearing down the drive and researching the physical means data is stored and read gave me some insights. While simple in theory, these devices use complicated means of electro-mechanical control and error correction to focus the optical lens, account for disk wobble/oscillations, and perform error corrections. The complexity of these subsystems makes directly controlling the DVD reader unfeasible given the time frame of the project and the skill sets of the project team. I think this would be more inline with a mechatronics or electrical engineering capstone project. Further, this is already performed by the on-board microcontroller so it wouldn’t make sense to try and reinvent the wheel here.

This leads me to think that it would be much easier to drive the optical drive via the on-board controller. I researched how this is done conventionally and it seems there are a number of industry standard protocols and connections used. An overview of optical drive specifications is provided in the following article: Optical Drive - OSDev Wiki

Starting from the article linked just above, I was able to determine the types of industry standard specifications and protocols that enable general computing devices to identify, communicate, and operate optical data storage devices. These are provided below:

  1. SCSI Hardware Interface Standard: All optical drives read and write data to and from an optical disc using the SCSI protocol which consists of a library of commands that are sent to the optical drive. The onboard optical drive controller uses these commands as instructions to be executed. What the drive needs to do to execute these instructions depends on the drive. The takeaway is that this firmware is packaged within the optic drive and we don’t need to worry about it.

  2. ISO 9660: All optic drives used as data storage drives use the ISO 9660 file system, the specifications of which are available for free under ECMA-119. Some USB thumb drives and hard disks also use this file system. This is an older standard that’s falling out of use.

  3. UDF: Used by windows in the Live-File-System, used to create rewritable file system on DVD-RW discs that enable conventional file handling within the windows ecosystem. This is likely the standard that should be used for this effort.

  4. ATAPI: ATAPI is used to issue SCSI commands to CD-ROM, CD-RW, and DVD drives.This standard uses an identifier command used by a general computing device to determine what type of drive has been connected.

  5. IDE: Integrated Drive Electronics (IDE) standard for internal data drive hardware connection including DVD optical drives using the ATAPI standard. Composed of a 40-pin hardware interface. This standard is older and falling out of use. However, it is well established and well documented.

  6. AHCI: Used to interface with SATA drives. Newer standard that is less established. More difficult to find documentation on. However, this may have advantages for this effort: ā€œSystem designers can easily access SATA drives using system memory and memory mapped registers, without the need for manipulating the annoying task files as IDE do.ā€

https://wiki.osdev.org/AHCI

  1. SATA: A hardware connection standard for internal drives that use the AHCI protocol.

During my research, I came across a number of projects and efforts that might provide a feasible path forward. See below.

  1. ATAPIDUINO project: DIY Arduino ATAPI CD-ROM controller

This project developed an Arduino to 40-pin IDE expander using the Arduino I2C bus. ATAPIDUINO uses an Arduino to turn a basic CD-ROM into a CD player. This approach uses the IDE interface directly.

  1. A disk reader and an arduino makes a CD player: An Arduino And A CD-ROM Drive Makes A CD Player | Hackaday

This project uses the prior work done under ATAPIDUINO to make a simple music player using an old CD-ROM and an Arduino.

Current thinking: I believe the following approach is feasible:

Step 1. Use an Arduino I2C to 40-pin IDE adaptor (based on the ATAPIDUINO project) to send SCSI commands to an IDE DVD Optical Disc Reader.

  1. Do not worry about writing data to disk. Only reading data.

  2. Learn how SCSI commands can be used to make the DVD reader perform specific operations.

  3. Develop an approach for getting the disc reader to read and output files from a DVD-RW disc using these commands.

Step 2. Devise a method for receiving and storing the data output from the IDE Optical Disk Reader to an onboard memory module.

  1. Assume the data files will be formatted as UDF.

Alternative approaches might include using a SATA drive instead or even a USB drive, if need be. However, given the ATAPIDUINO effort, I believe the IDE DVD drive approach is the best option assuming we can source a (hopefully still in production) DVD drive that will work with this method.

If anyone can readily identify any specific technical hurdles that we will encounter here, your input is appreciated.

1 Like

That might be where you get stuck. Plenty of second hand ones around though.

However, it doesn't seem very future-proof to start off with an obsolete standard though. I would look more closely at the USB option.

1 Like

I think your first task is to find a processor that fits your requirements, Most if not all Arduino's and Raspberry pi's would not be applicable as they will do either WiFi or Bluetooth. and many of the Pis run an OS. You will also have to find a processor that will support the USB as well.

My recommendation is run the other way as fast as possible. This is something that is given to an experienced design team, not a beginner.

1 Like

The issue is the nonsensical cyber security constraints. If it’s anything more advanced than a microcontroller, we can’t use it without navigating some extremely onerous approval process that are too long or too expensive for our projects to afford.

Unfortunately it’s too late for them to back out now. But as a sponsor I can exercise discretion. We can pivot to a more achievable project if this truly isn’t feasible. However, before that I want to investigate all options. They only need to read data off a drive. They (hopefully) do not need to actually do anything with that data other than record it to onboard memory if need be. The operation can be as simple as step 1) insert DVD disc; step 2) rote copy all data sectors over to flash memory module once powered on.

It would be neat to enable the printer to read from the dvd using the arduino as an intermediary but that is much more complex of a task.

1 Like

I’m not sure how future proof DVDs are at this time either. I just need this solution to last a few years so that my projects survive the recent gauntlet of nonsensical cyber security constraints.

I still think USB is feasible and I plan to talk with the students on that option. I’m just not clear on a technical approach.

Maybe there is another option entirely I’m not thinking of. I just need a rudimentary way of getting data files off my secure work station and on to the prusa printers that doesn’t involve removable flash memory, HDDs, direct USB connections, networked solutions, or anything that isn’t a basic controller running firmware. That leaves DVD media or direct physical ethernet connection to a microcontroller hosting an IP address. The latter might be our plan B but we are walking a fine line with that option in terms of security constraints.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.