SATA DVD?

I’m not sure if it’s possible … is the SATA limited to a harddrive or can it work with a DVD? I plugged one up and it’s detecting it:
[ 2.642808] ata1: SATA max UDMA/133 mmio [mem 0x03507000-0x03508fff] port 0x100 irq 24
[ 3.132743] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 3.133303] ata1.00: ATAPI: ATAPI iHOS104, WL0G, max UDMA/100
[ 3.134039] ata1.00: configured for UDMA/100

But it’s not showing up in /dev

No sr0, sda, etc. Any ideas?

SATA should work with a DVD. There may be other software involved, or perhaps udev has/hasn’t renamed it as expected.

What is the output of:

cd /dev/block
ls -l *

The result is:

lrwxrwxrwx 1 root root 10 May 23 20:26 179:0 -> ../mmcblk0
lrwxrwxrwx 1 root root 12 May 23 20:26 179:1 -> ../mmcblk0p1
lrwxrwxrwx 1 root root 12 May 23 20:26 179:2 -> ../mmcblk0p2
lrwxrwxrwx 1 root root 12 May 23 20:26 179:3 -> ../mmcblk0p3
lrwxrwxrwx 1 root root 12 May 23 20:26 179:4 -> ../mmcblk0p4
lrwxrwxrwx 1 root root 12 May 23 20:26 179:5 -> ../mmcblk0p5
lrwxrwxrwx 1 root root 12 May 23 20:26 179:6 -> ../mmcblk0p6
lrwxrwxrwx 1 root root 12 May 23 20:26 179:7 -> ../mmcblk0p7
lrwxrwxrwx 1 root root 14 May 23 20:26 179:8 -> ../mmcblk0rpmb
lrwxrwxrwx 1 root root 12 May 23 20:26 259:0 -> ../mmcblk0p8
lrwxrwxrwx 1 root root 12 May 23 20:26 259:1 -> ../mmcblk0p9
lrwxrwxrwx 1 root root 13 May 23 20:26 259:2 -> ../mmcblk0p10
lrwxrwxrwx 1 root root 13 May 23 20:26 259:3 -> ../mmcblk0p11
lrwxrwxrwx 1 root root 13 May 23 20:26 259:4 -> ../mmcblk0p12
lrwxrwxrwx 1 root root 13 May 23 20:26 259:5 -> ../mmcblk0p13
lrwxrwxrwx 1 root root 13 May 23 20:26 259:6 -> ../mmcblk0p14
lrwxrwxrwx 1 root root 13 May 23 20:26 259:7 -> ../mmcblk0p15
lrwxrwxrwx 1 root root 13 May 23 20:26 259:8 -> ../mmcblk0p16
lrwxrwxrwx 1 root root 13 May 23 20:26 259:9 -> ../mmcblk0p17

Was there a CD/DVD in the drive at the time?

EDIT: I forgot something…the kernel config would need to support CONFIG_ISO9660_FS (and for convenience some others) for a DVD/CD to show up as a mountable block device. The default is to not have this it seems. You may need to build CONFIG_ISO9660_FS (and also likely CONFIG_UDF_FS would help) as kernel modules and install the modules. This may be the problem. There may be other configs needed to get to that…you can do a symbol search for ISO9660 (and DVD or CDROM) under “make nconfig” while figuring out what you need.

Yes – and I just double-checked. The result is the same with a disk in or out.

Then it is likely you need to add the above features to the kernel (either directly or as a module…features for CD/DVD and the file system types). Do you find them in your “/proc/config.gz”? E.G., view via:

gunzip < /proc/config.gz | less

Thanks! I went through the config.gz and found what you mentioned above as “not set”.

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

Alas, after googling and trying to figure out how to install those modules on my own, I failed. How do I build what I need to in order to get the DVD up and running?

The interesting thing is that if you are just building a module (or I should say only aarch64 architecture) it isn’t too bad on the JTX2. Here’s some info:
http://www.jetsonhacks.com/2017/03/25/build-kernel-and-modules-nvidia-jetson-tx2/

Basically, if your kernel source is on the TX2 (traditionally at “/usr/local/src/kernel” or “/usr/src/kernel”), and you configure it using the existing config (copy “/proc/config.gz” to your compile location, then “gunzip config.gz”, and copy to “.config”), you’re almost set. There are some configuration tools you may need to install a package for, e.g., libncurses5-dev is needed for “make menuconfig” or “make nconfig”…there is also libncurses5w-dev for some wide characters in non-western locales (the extra “w” stands for “wide characters”). You might run this before trying to configure:

sudo apt-get install libncurses5-dev

The “.config” file has one other edit before it exactly matches the current kernel. If you run the command “uname -r”, then the suffix to the version shown is the setting used in CONFIG_LOCALVERSION. So if “uname -r” is “4.4.15-tegra”, then the kernel source is 4.4.15, and LOCALVERSION is “-tegra”. You need to set the config to match the “-tegra” part. You can edit the “.config” file directly and set:

CONFIG_LOCALVERSION="-tegra"

Or you might run “make nconfig” (still assumes “.config” was put in place based on “/proc/config.gz”), search for LOCALVERSION, and navigate to that…set it to “-tegra”, and save. If you build this kernel now, you will get an exact copy of the features of the existing system. You can add modules (such as for DVD and ISO9660) and they will drop in and work with this kernel since the configuration matches. Under “make nconfig” you can search for the symbols you are wanting and navigate there, enable as a module (‘m’…this will simplify things because you only add a module and not replace the whole kernel), and when it is all configured you can build the modules:

make modules_prepare
make modules

If you run “sudo make modules_install” from the Jetson it would put everything in that is a module…that’s ok, but not needed since only your additions changed. Copying other modules in which are duplicates is not harmful, it just isn’t useful. If you know the name of the module which is new (when you go to “make nconfig” you can look at the help on the item and it will tell you the module name) you can just copy it to the correct subdirectory of “/lib/modules/uname -r/”. There is a logical structure of those subdirectories, so you can look at where in the kernel source the module is and have a good idea where to copy it in the modules directory. If this is confusing, just go ahead and instead “sudo make modules_install”.

The “sudo depmod -a” should do any bookkeeping needed so the kernel loads modules without needing help.

The TX2 documentation has a kernel build set of information in it. Some information may be about cross compiling and tool chains…when just building modules directly on the TX2 you don’t need to worry about that. See Documentation at:
https://developer.nvidia.com/embedded/linux-tegra