User Tools

Site Tools


prime_161_akaiforce

This page is building…

To Create Prime image for Akai force you can follow this procedure. It's working on release 2.1.2.

Go to Engine Prime Download and get firmware 2.1.2 :

https://enginedj.com/downloads

dnttalo.cluster029.hosting.ovh.net_pictures_denonsite.jpg

By using Thekikgen method you have to extract the rootfs image from firmware : https://github.com/TheKikGen/MPC-LiveXplore/wiki/How-to-extract-the-2.6-rootfs-img-from-the-update.img

With Hex Editor ,( i'am using HXD) , search for Hex Value : FD 37 7A 58 5A dnttalo.cluster029.hosting.ovh.net_pictures_hexsearch.jpg

It will give you something like this : dnttalo.cluster029.hosting.ovh.net_pictures_hexedit.jpg

Then : Go to position 2B94 and remove everything upper the string : dnttalo.cluster029.hosting.ovh.net_pictures_hexsearchresult.jpg

dnttalo.cluster029.hosting.ovh.net_pictures_hexeditsuppr.jpg

Then save the file and quit Hex Editor. Next go to file folder where you saved the .img. With 7zip, click the file and choose Extract Here :

dnttalo.cluster029.hosting.ovh.net_pictures_7zextract.jpg The will extract the Filesystem image which is approx 512 mb. You can copy this new file ( 512 mb ) on your SD card.

Then we are going to a create filesystem overlay which will contain our files. On you media card location ( eg : /media/02EB-7AEF/ ) use the following command to create a new filesystem file.

 dd if=/dev/zero of=lower-fs.img bs=4096 count=204800 

It will create a file which size is 800 mb. to give Ext4 FS type to our file, issue this comand :

 mkfs -t ext4 lower-fs.img 

Create a folder named overlay on your media card ( eg : /media/02EB-7AEF/overlay).

 mkdir /media/02EB-7AEF/overlay 

Mount the created filesystem file ( lower-fs.img) on overlay folder :

 mount lower-fs.img overlay 

Go to your overlay folder :

 cd overlay 

And create the following folder :

mkdir overlayupper
mkdir overlaywork

ls => lost+found overlayupper overlaywork

Then we have to populate our overlayupper folder with the content of the denon firmware. You can view the 512 Mb file from denon with 7zip, and extract / transfert files. Another way is to mount the 512Mb file in another folder, and to copy files from there. That's i will do.

I put the 512Mb file in a folder named SC5 on my media card :

02EB-7AEF is the name of my SD, it will be another on your side.

# pwd
/media/02EB-7AEF/SC5

# ls -al
4
total 512256
drwxr-xr-x 2 root root 131072 Mar 24 14:45 .
drwxr-xr-x 60 root root 131072 Mar 24 14:36 ..
-rwxr-xr-x 1 root root 524288000 Mar 24 13:53 PRIMEGO-2.1.2-Update

# mkdir /media/02EB-7AEF/PRIMEGOIMGFILE

# mount PRIMEGO-2.1.2-Update /media/02EB-7AEF/PRIMEGOIMGFILE

# cd /media/02EB-7AEF/PRIMEGOIMGFILE

-- Here you see the content of the rootfs, mounted on /media/02EB-7AEF/PRIMEGOIMGFILE
# ls
bin dev home lib32 lost+found mnt proc 
run srv tmp var
boot etc lib linuxrc media opt root 
sbin sys usr

# cd usr

# ls
Engine bin lib libexec qt share
SoundSwitch etc lib32 mkspecs sbin

copy files :

# cp -a Engine/ /media/02EB-7AEF/overlay/overlayupper/
# cp -a SoundSwitch/ /media/02EB-7AEF/overlay/overlayupper/
# cp -a qt /media/02EB-7AEF/overlay/overlayupper/

Some extra/new libs are required :

# cp -a lib/libboost* /media/02EB-7AEF/overlay/overlayupper/lib/
# cp -a lib/libicu* /media/02EB-7AEF/overlay/overlayupper/lib/

All this files are put in the lower-fs.img file.

Then we will use the magical trick of the overlay to map what we have in overlayupper on /usr : to do that i do :

mount -t overlay -o 
rw,relatime,lowerdir=/usr,upperdir=/media/02EB-7AEF/overlay/overlayupper,workdir=/med
ia/02EB-7AEF/overlay/overlaywork overlay /usr

And when you go to /usr , Taddaaaa! you have your content :

# cd /usr

# ls
Engine SoundSwitch bin etc lib lib32 libexec 
qt sbin share

Once done, before running Engine you have to EXPORT some var :

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/qt/lib
export AIR_SCREEN_ROTATION=-90

And to spoof product-code, you have to bind a file with new product code. to do this do a copy of the real file :

eg : copy "/sys/firmware/devicetree/base/inmusic,product-code" "/media/02EB-7AEF/inmusic,product-code"

Then edit the file :

vi "/media/02EB-7AEF/inmusic,product-code" 

Change ADA2 or what you have by JP11 for the prime GO ( Shift + R on vi to replace ) Dont remove the ending ^@

Then mount the file like this :

 
mount -o bind "/media/02EB-7AEF/inmusic,product-code" "/sys/firmware/devicetree/base/inmusic,product-code"

And rename the file /usr/Engine/Content/KnownDevices.vfsb to anything else :

eg : mv /usr/Engine/Content/KnownDevices.vfsb /usr/Engine/Content/KnownDevices.bak

/!\ : before running prime , rename /usr/bin/dfu-util to dfu-utill. to do this :

mount remount / -o rw,remount
mv /usr/bin/dfu-util /usr/bin/dfu-utill

Otherwise Prime may try to update STM32 firmware in dfu mode.

Now you can run prime, however like this , there is no mapping done to use it.

Some examples of assignments files are available in the folder : /usr/Engine/AssignmentFiles/PresetAssignmentFiles/

And then to run Prime Issue the command ( in /usr/Engine)



# ./Engine

In the starting log you'lle see :

in the log we see the model and assignment files : 
QCommandLineParser: option not defined: "configuration"
DenonDJ "PRIME GO 2.1.2 eaf7ec4c8" starting up
QCommandLineParser: option not defined: "cleanupQSettings"
FORCING SWAP INTERVAL = 1
FORCING SWAP INTERVAL = 1
air.assignments.deviceadapter: Could not find file: "Akai_Pro_Force_Public_Assignments.qml"
air.assignments.deviceadapter: Could not find file: "Akai_Pro_Force_Public_Device.qml"
air.assignments.deviceadapter: Could not find file: "Akai_Pro_Force_MIDI_Port_Assignments.qml"
air.assignments.deviceadapter: Could not find file: "Akai_Pro_Force_MIDI_Port_Device.qml"
qml: Sending Initilization Message Akai Pro AMX
qml: Sending initialization message for PRIME GO ...
qml: Initialization phase ended
qml: Query absolute position controls

So the Next step to use prime is to create/configure qml files used by Prime to map buttons and led. On Akai force you can make 4 qml in relation with audio interface. I was not able to verify if public qml file are working because on my first try i had these 4 files.

“Akai_Pro_Force_Public_Assignments.qml” “Akai_Pro_Force_Public_Device.qml” “Akai_Pro_Force_Private_Assignments.qml” “Akai_Pro_Force_Private_Device.qml”

Now i'm only using private files and it's working well.

Public files are used to map inputs, Private files are used to map Led / Pad colors output

dnttalo.cluster029.hosting.ovh.net_pictures_enginedjakf2.jpg dnttalo.cluster029.hosting.ovh.net_pictures_enginedjakf.jpg

prime_161_akaiforce.txt · Last modified: 2023/11/22 17:09 by ounsatn

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki