wtfplay project - Linux based PC playback system

@promisc: Ubuntu works because it loads a fully featured driver for your graphics adapter (to run Waylaynd, or whatever else they run). wtfplay-live rides on what's has been intialised by the firmware, which has literally very basic functions only.

QUIRK_FLAG_DSD_RAW requires rebuilding the kernel, there is no way around it. But to see if it is even feasible, the first step is to see PHA's UAC descriptors:

cat /proc/asound/cardX/stream0

This should be start. X is the card number assigned for PHA. Later: lsusb -v for PHA. This could be executed on any Linux and should give some clue on what may be going on. Wireshrk USB capture under Windows is also a good idea, especially if Sony chose to use vendor command to switch the device to DSD mode.

And finally, nice remote control. I use BT to UART adapter.
 
@Henkie01: I am guessing that when you say "an USB port on the same computer" you mean the built-in USB port. Is this happening with any USB DAC (sound card) or just a specific one? What sort of computer is this? Do you know what kind of USB controller chip it has? Did you try it on different computer? From your brief description this sounds like somethign specific to your hardware.

You can try running "lspci" and this will print the identifiers of all PCI devices in your computer, including the built-in USB controllers. Also, after wtfplay prints the error, try running "dmesg" to see the kernel log. I am just curious if it prints anyting interesting there.

In the past there was a problem with PCI card USB controllers that were based on Renesas chips and certain USB/I2S interfaces, such as Amanero with an old firmware. USB driver was failing to configure Renesas controller to operate under parameters requsted by Amanero. The controller did not like one of the bus interval values. I think the firmware update made the issue dissappear completely.
 
Hi @frd__, thanks for the fast response.
I'm indeed talking about a normal built-in USB port. I tried on 2 different computers, one AMD, one Intel. Both give the same error. I only have one DAC (audial S5), so I can not test with a different one.

Regarding the linux commands you mention, i can post the outcome here if you want. Only dmesg scrolls immediatly to the end of the file so if you have a command so I can scroll through the file myself.
 
It seems that Audial S5 uses internally XMOS to convert from USB to I2S, so I do not expect issues there. I've been running various XMOS based USB/I2S adapters/DACS and never had any issue, on any system. I take into account that Audial might have customised XMOS firmware, but let's leave that for now.

I presume that your built-in USB ports are 3.x rather than 2.0. Just for completeness, is your Pink Faun card USB3 or USB2?

Once you trigger the error with wtfplay, the kernel error message is appended at the end of 'dmesg' output. I do not need to see the whole kernel log, just the end of it. You can post it here, or better email it at contact@wtfplay-project.org and we will take it from there.

F
 
@promisc: The intention behind making all ISO images was to make possible to check if CPU specific optimisations matter or not. So anyone could try it on his own computer hardware, in his own audio system, and draw his own conclussions, according to his own sound preferences. Does AVX matter? That was the exact question I had in mind before I built the AVX ISO :)
 
  • Like
Reactions: 1 user
Dear @frd__ , i want to use all the free space on live usb wtfplay with music, but any manipulations with creating new partition or resizing wtfplay-conf fails with removing wtfplay-live partition. Is it possible to resize wtfplay-conf inside the wtfplay booted? I use dd to write iso.
Screenshot from 2024-06-07 22-13-27.png
 
OK - this is the procedure of adding a new FAT32 partition to the wtfplay-live image that was written on a memory stick. I have just tested all steps and it works as expected. I used 2GB memory stick.

What you need:
1. Linux - we will type a few commands. Any distribution should do. I used Archlinux.
2. root access - the disk modification commands must be executed with root privileges
3. wtfplay-live ISO image
4. a memory stick

My memory stick is /dev/sdb. Your may be different.
The ISO image that I use is wtfplay-live-0.7.4.3-core2.iso. Your may be different.
The commands are in bold. The code blocks show the command that I executed and what those command printed in the terminal (I removed some unrelated messages in the last step).

Step 1: Write the ISO image onto the memory stick

dd if=wtfplay-live-0.7.4.3-core2.iso of=/dev/sdb bs=4M

Code:
[root@linux]# dd if=wtfplay-live-0.7.4.3-core2.iso of=/dev/sdb bs=4M
6+0 records in
6+0 records out
25165824 bytes (25 MB, 24 MiB) copied, 3.41836 s, 7.4 MB/s

Step 2: Display the partition table. We want two things: the number of sectors on the memory stick (this will depend of the memory stick capacity), and the number of the first free sector. The number if the first free sector is not going to be displayed, but, instead we will see the number of last sector that is occupied. The first free one next.

fdisk -l /dev/sdb

Code:
[root@linux]# fdisk -l /dev/sdb
Disk /dev/sdb: 1.87 GiB, 2003828736 bytes, 3913728 sectors
Disk model: USB DISK Pro   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x480618fb

Device     Boot Start   End Sectors  Size Id Type
/dev/sdb1  *        0 24575   24576   12M  0 Empty
/dev/sdb2         108  2987    2880  1.4M ef EFI (FAT-12/16/32)
/dev/sdb3       24576 49151   24576   12M 83 Linux

Above we can see that the total number of sectors on my memory stick is 3913728 and the last occupied sector is 49151. This means that the first free sector is 49152.

Step 3: Calculate the number of free sectors on the memory stick (you can use a calculator instead :) ) I am using the total number of sectors and the number of the first free sector on the disk. In the result we will get the size of the new partition that we will append.

expr 3913728 - 49152

Code:
[root@linux]# expr 3913728 - 49152
3864576

In my case the size of the new parition will be 3864576 sectors.

Step 4: Append the partition. We are using sfdisk utility for this. We are also using it in the batch mode.

echo "49152 3864576 0b -" | sfdisk -a /dev/sdb

Here is what is happening above. We pass the new partition specification to sfdisk, which kindly append it (-a option) to the partition table of /dev/sdb.

The partition specification has four entries separated by space. Their meaning is as follows:

49152 is the first sector of the new partition. We found it in step 2.
3864576 is the size of the new partition. We calculated it in step 3.
0b is the partition type. 0b is for FAT32.
- (hyphen) means the field is absent. In this case this is a bootable flag (we do not want the new partition to be bootable.

Warning: This command will modify the partition table on the memory stick, so double check everything before accepting with ENTER.

Code:
[root@linux]# echo "49152 3864576 0b -" | sfdisk -a /dev/sdb
Checking that no-one is using this disk right now ... OK

The device contains 'iso9660' signature and it may remain on the device. It is recommended to wipe the device with wipefs(8) or sfdisk --wipe, in order to avoid possible collisions.

Disk /dev/sdb: 1.87 GiB, 2003828736 bytes, 3913728 sectors
Disk model: USB DISK Pro   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x480618fb

Old situation:

Device     Boot Start   End Sectors  Size Id Type
/dev/sdb1  *        0 24575   24576   12M  0 Empty
/dev/sdb2         108  2987    2880  1.4M ef EFI (FAT-12/16/32)
/dev/sdb3       24576 49151   24576   12M 83 Linux

/dev/sdb4: Created a new partition 4 of type 'W95 FAT32' and of size 1.8 GiB.
All partitions used.

New situation:
Disklabel type: dos
Disk identifier: 0x480618fb

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1  *        0   24575   24576   12M  0 Empty
/dev/sdb2         108    2987    2880  1.4M ef EFI (FAT-12/16/32)
/dev/sdb3       24576   49151   24576   12M 83 Linux
/dev/sdb4       49152 3913727 3864576  1.8G  b W95 FAT32

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Step 5: Create FAT32 filesystem on the freshly created partition. I named mine "MUSIC":

mkfs.vfat -n MUSIC /dev/sdb4

Code:
[root@linux]# mkfs.vfat -n MUSIC /dev/sdb4
mkfs.fat 4.2 (2021-01-31)

Step 6: Double-check if everything is as intended with lsblk.

lsblk
lsblk -f


Code:
[root@linux]# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sdb           8:16   1   1.9G  0 disk
├─sdb1        8:17   1    12M  0 part
├─sdb2        8:18   1   1.4M  0 part
├─sdb3        8:19   1    12M  0 part
└─sdb4        8:20   1   1.8G  0 part

[root@linux]# lsblk  -f
NAME        FSTYPE  FSVER LABEL        UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdb         iso9660       WTFPLAY-LIVE 2020-10-17-20-53-04-14                             
├─sdb1      iso9660       WTFPLAY-LIVE 2020-10-17-20-53-04-14                             
├─sdb2      vfat    FAT12 WTFUEFI      BA01-25E3                                          
├─sdb3      ext2    1.0   WTFPLAY-CONF 9720277f-ac9c-4831-b73d-7c10eedc3fb4               
└─sdb4      vfat    FAT32 MUSIC        AC44-8592

And you are done!

If you mess something up you can always try again. Writing a new ISO image onto the memory stick will overwrite the broken parition table.