Jump to content
IGNORED

SACD Ripping using an Oppo or Pioneer? Yes, it's true!


ted_b

Recommended Posts

3 minutes ago, Phthalocyanine said:

@mindset Thanks for that tip!  I searched for vermagic in the Oppo sacd_extract and got this

 

vermagic=2.6.35 SMP preempt mod_unload ARMv7

 

So ARMv7! 😀

That is interesting.  I have a way to extract the kernel module from the program.  I can try loading it on my BDP-S6200 which also runs 2.6.35 ARMv7.

Link to comment
32 minutes ago, mindset said:

I am doing all this experiments in telnet.  Not sure if we can make this work automatically via Autoscript

I got it working with this in Autoscript (note LD_LIBRARY_PATH.  This is needed to for sacd_extract to find libiconv.so.2).

CLI(CLI_exec cp /mnt/sd*/sacd_extract /3rd_data)
CLI(CLI_exec cp /mnt/sd*/libiconv.so.2 /3rd_data)
CLI(CLI_exec LD_LIBRARY_PATH=/3rd_data /3rd_data/sacd_extract -S &)

 

Link to comment
On 2/11/2019 at 11:14 AM, Knur said:

@mindsetYou mentionned that you have a way to extract the kernel module from the sacd_extract binary, may you enlighten me ?

 

Open the sacd_extract binary with a binary editor, and replace this 

insmod %s minor=201

with

cp  %s /3rd_data/

, and executethe modified  sacd_extract.  Then a file whose name starting with "tmp" will be created under 3rd_data.  That is the kernel module

Link to comment
On 2/12/2019 at 9:52 AM, Phthalocyanine said:

For this new method for the S790 and S5200 to work, both the sacd_extract program and the libiconv library have to be in the same folder.  That folder can either be root or /mnt/3rd_data, but you have to chose one or the other and your scripts have to specify the correct folder.  @mindset had both in /mnt/3rd_data, so that's why his script uses it.  But you, using the stock script had sacd_extract copied to root, so mindset's script referencing libiconv in 3rd data would not work because that's a different directory than root and both have to be in the same directory.

 

Is that correct, @mindset?

 

Well, the AutoScript I posted copies both sacd_extract and libiconv.so.2 to the same directory, but they don't necessarily have to be in the same directory.  What is important is libiconv.so.2 resides in the directory specified by LD_LIBRARY_PATH in the AutoScript.

 

For the server method with BDP-S6200, it is important that the USB stick is inserted after the disc is inserted and the player is put in sleep (of course with quick start mode enabled).  After AutoScript is loaded from the USB stick, it can be removed and discs can be sequentially processed as long as the player is put in sleep.  Note that sacd_extract is the one for Oppo (md5sum = 14b531b622c92dfe159cf36cff954e5a).  AutoScript.TSS is not needed.  I don't have it in my AutoScript directory.

 

By the way, BDP-S6500 and BDP-S6700 carry kernel 3.10.26.  This is a real challenge.

Linux sony-player 3.10.26 #1 SMP PREEMPT Tue Oct 3 13:25:52 JST 2017 armv7l GNU/Linux

 

Link to comment
27 minutes ago, Phthalocyanine said:

This seems to say that one should insert the USB stick after the player is put to sleep (in quick start mode).

 

I thought that once it was in sleep mode, the player could not access the USB ports.

Correct.  For BDP-S6200, I see that sacd_extract needs to start "after" the player is put to sleep. USB stick is accessible during sleep on this player (which was not the case for older players). 

 

sacd_extract won't start properly if I insert the USB stick before the player is put to sleep.

 

Link to comment

To avoid the extra libiconv.so.2 business for BDP-S6200 (and probably BDP-S790), I tried kernel module transplantation from sacd_extract for Oppo to sacd_extract_160.  It seems to work fine.  The following script for Linux extracts the kernel module for ARMv7 from sacd_extract and overwrite the one for ARMv6 in sacd_extract_160 with the extracted kernel module.  The new binary (sacd_extract_6200) can be used in the same way as sacd_extract_160 on BDP-S6200 (and possibly BDP-S790).  As I mentioned earlier, sacd_extract_6200 has to be launched in sleep mode for the server method at least on BDP-S6200.  Note that arm-linux-gnueabi-strip has to be installed for this to work.  For Ubuntu, it's in this package: binutils-arm-linux-gnueabi

 

#!/bin/sh
dd if=sacd_extract of=sacd_read.ko bs=1 skip=192524 count=99505
arm-linux-gnueabi-strip -S -o sacd_read_strip.ko sacd_read.ko 
cp sacd_extract_160 sacd_extract_6200
cat sacd_read_strip.ko | dd of=sacd_extract_6200 bs=1 seek=192476 conv=notrunc

md5sum of the inputs:

sacd_extract:     14b531b622c92dfe159cf36cff954e5a
sacd_extract_160: 49107e9625e8cd27232e395787c46fe2

 

Link to comment
2 minutes ago, Phthalocyanine said:

So this refers to using command line SACD extract on a Linux machine? (Your usual method.)

Yes, the script is intended to run on a Linux machine (not Blu-Ray players) to just to create a sacd_extract binary that works on BDP-S6200.

 

3 minutes ago, Phthalocyanine said:

One would also need to come up with methods for people who will be using Windows or Mac with SACD extract command line  or ISO2DSD. 

Cannot think of a way for Windows other than using WSL (windows subsystem for Linux).  No idea about Mac.

Link to comment
On 2/21/2019 at 12:09 PM, Nexus3 said:

@mindset Can you shed some light on the script files you have used on your S6200?

This is the only thing I have in AutoScript (I do not even have AutoScript.TSS).

CLI(CLI_exec cp /mnt/sd*/sacd_extract_6200 /3rd_data)
CLI(CLI_exec /3rd_data/sacd_extract_6200 -S &)

 

The following is a working sequence.  Inserting the USB stick before putting the player in sleep doesn't work.  (debugging via telnet shows sacd_extract_6200 won't even start)

  • Insert the power plug
  • Open the tray & insert a disc
  • Press the power button to put the player in sleep (with the quick start mode enabled)
  • Insert the USB stick
  • Run sacd_extract from a PC
Link to comment
3 hours ago, Phthalocyanine said:

As I recall, it read the redbook CD layer of SACD hybrids and would shown "unknown disc" for non-hybrids.

This is a problem.  Unless the disc is mouted as SACD, you cannot read anything (encrypted or decrypted) from the SACD layer.

 

3 hours ago, Phthalocyanine said:

But when it came to running sacd_extract_160 this is what I always got:

 

sh: mknod: not found
[0]: install_modules: mknod/insmod filed
[0]: Can not install modules

This means the essential command for sacd_read kernel module called mknod is missing on the player or is at a non-standard location.  You need to get it from somewhere or find it on the player.  

Link to comment
11 hours ago, Phthalocyanine said:

But the question is can one get this player to mount the disc as a SACD through the mediatek/Linux commands?

I am not aware of any easy way like that.  The only way I could find was to modify the bdpprog program, which is very tedious.  You need to disassemble the program, analyze it to find the layer selection portion, and modify that part to force the player to select the SACD layer.

 

11 hours ago, Phthalocyanine said:

Very interesting.  But how would one begin to get mknod from somewhere?  Alternatively, could you suggest a Linux search command I could run through telnet on the player to look for mknod on the player?

mknod is a standard Linux command and should be at /bin/mknod

Link to comment
1 hour ago, Nexus3 said:

 


./dmesg: error while loading shared libraries: libncursesw.so.6: cannot open shared object file: No such file or directory

 

This is a common problem of borrowing a program from other machine.  You copied the program but not its dependencies. You can try copying libraries it complains about that it might not go anywhere. 

 

 

Sony refuses on cliprog:

cliprog
 open cli device OK!
Enter drv.bonding.g
Cannot do ioctl to device!

Do not enter "Enter".

 
Link to comment
1 hour ago, Nexus3 said:

Thank you @mindset - sometimes persistency pays out.🤑



 

If you are interested, try "ls" in the cliprog program.  You will get a list of commands in dmesg.  For a list of subcommands you can just enter the command name like "drv" or "drv.bonding".  There are lots of different commands you can play with including a few related to SACD.

 

 

Link to comment
1 hour ago, Nexus3 said:

Assuming the drv.ir.rx.sq is the command sequence for "fake" internal infra-red code inputs via cliprog and 0xaf000 is the hex-code for the EJECT-button, shouldn't there also be hex-codes for other keys like "options" "directions keys" and the "enter key?

IR codes are associated with player functions in /etc/lircd.conf.  But I don't see 0xaf000.  

Link to comment

Regarding your comment on local ripping in sleep mode on BDP-S7200:

 

2 hours ago, Nexus3 said:

Well the telnet session should still work even within sleep mode, only the USB-ports should be gone. Hence a local ripping is not possible within sleep mode.

At least for BDP-S6200, this is not true.  USB does remain alive in sleep and local ripping to a USB stick during sleep is possible.   I would guess the same is true for BDP-S7200 as well.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...