¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

FILE OPERATIONS ON VC4


 

Hi guys I have been attempting to perform file operations on a VC4 via Simpl +. However I keep getting the error code that the file is not found even though I can see it in that specific directory.
Function like set directory also bring up errors. Anyone faced this kind of issue before kindly advise.


 

It's probably file permissions. The only user that you can upload files to is "admin", but the vc4 softwqare runs as user "virtualcontrol" So any files you put into /opt/crestron/virtualcontrol/Runningprograms/<YourRoomIDHere>/Nvram need to change ownership via "sudo chown virtualcontroluser:virtualcontroluser <file name>:

I have had to do that so often I made up a little shell script to do that all for me. See below.


Shell script. copies files from a folder under admin to both Nnram folder and to the Nvram/ProgID folder.


========================================Begin Shell Script========================
#!/bin/bash


SOURCEDIR=/home/admin/ConfigFiles
TARGETDIR=/opt/crestron/virtualcontrol/RunningPrograms
RID1=10109
RNAME1=VA-Innovation
RID2=10201
RNAME2=VA-ViewingRm
RID3=10202
RNAME3=VA-FitnessCtr

read -p "Program 1 is $RNAME1 with Room ID $RID1. Press enter to abort, s to skip P1 or <anything else> to continue:" R1
if [[ -n $R1 ]]??? #if not an empty string
then
?? ?if [[ "${R1,,}" = "s" ]]??? #convert to lowwer case and check to see if it's an s
?? ?then
?? ???? echo Skipping Program 1.
?? ?else
?? ???? if [[ ! -d $TARGETDIR/$RID1 ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID1 does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID1
??????????? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID1
?? ???? fi
?? ???? if [[ ! -d $TARGETDIR/$RID1/Nvram ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID1/Nvram does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID1/Nvram
?? ???? ??? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID1/Nvram
?? ???? fi
?? ???? if [[ ! -d $TARGETDIR/$RID1/Nvram/$RNAME1 ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID1/Nvram/$RNAME1 does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID1/Nvram/$RNAME1
?? ???? ??? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID1/Nvram/$RNAME1
?? ???? fi
?? ???? echo Moving $SOURCEDIR/Xml Files
?? ???? sudo cp $SOURCEDIR/*.Xml $TARGETDIR/$RID1/Nvram
?? ???? echo Moving $SOURCEDIR/$RNAME1 Files
?? ???? sudo cp $SOURCEDIR/$RNAME1/* $TARGETDIR/$RID1/Nvram/$RNAME1
?? ???? sudo chown -R virtualcontroluser:virtualcontroluser $TARGETDIR/$RID1/Nvram/*
?? ?fi
else
?? ?echo "Aborting.."
?? ?exit
fi


read -p "Program 2 is $RNAME2 with Room ID $RID2. Press enter to abort, s to skip P2 or <anything else> to continue:" R2

if [[ -n $R2 ]]
then
?? ?if [[ "${R2,,}" = "s" ]]
?? ?then
?? ???? echo Skipping Program 2.
?? ?else
?? ???? if [[ ! -d $TARGETDIR/$RID2 ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID2 does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID2
??????????? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID2
?? ???? fi
?? ???? if [[ ! -d $TARGETDIR/$RID2/Nvram ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID2/Nvram does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID2/Nvram
?? ???? ??? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID2/Nvram
?? ???? fi
?? ???? if [[ ! -d $TARGETDIR/$RID2/Nvram/$RNAME2 ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID2/Nvram/$RNAME2/ does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID2/Nvram/$RNAME2
?? ???? ??? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID2/Nvram/$RNAME2
?? ???? fi
?? ???? echo Moving $SOURCEDIR/Xml Files
?? ???? echo Moving $SOURCEDIR/Xml Files
?? ???? sudo cp $SOURCEDIR/*.Xml $TARGETDIR/$RID2/Nvram
?? ???? echo Moving $SOURCEDIR/$RNAME2 Files
?? ???? sudo cp $SOURCEDIR/$RNAME2/* $TARGETDIR/$RID2/Nvram/$RNAME2
?? ???? sudo chown -R virtualcontroluser:virtualcontroluser $TARGETDIR/$RID2/Nvram/*
?? ?fi
else
?? ?echo "Aborting.."
?? ?exit
fi


read -p "Program 3 is $RNAME3 with Room ID $RID3. Press enter to abort, s to skip P3 or <anything else> to continue:" R3

if [[ -n $R3 ]]
then
?? ?if [[ "${R3,,}" = "s" ]]
?? ?then
?? ???? echo Skipping Program 3.
?? ?else
?? ???? if [[ ! -d $TARGETDIR/$RID3 ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID3 does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID3
??????????? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID3
?? ???? fi
?? ???? if [[ ! -d $TARGETDIR/$RID3/Nvram ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID3/Nvram does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID3/Nvram
?? ???? ??? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID3/Nvram
?? ???? fi
?? ???? if [[ ! -d $TARGETDIR/$RID3/Nvram/$RNAME3 ]]
?? ???? then
?? ???? ??? echo Directory $TARGETDIR/$RID3/Nvram/$RNAME3 does not exist, creating
?? ???? ??? sudo mkdir $TARGETDIR/$RID3/Nvram/$RNAME3
?? ???? ??? sudo chown virtualcontroluser:virtualcontroluser $TARGETDIR/$RID3/Nvram/$RNAME3
?? ???? fi
?? ???? echo Moving $SOURCEDIR/Xml Files
?? ???? sudo cp $SOURCEDIR/*.Xml $TARGETDIR/$RID3/Nvram
?? ???? echo Moving $SOURCEDIR/$RNAME3 Files
?? ???? sudo cp $SOURCEDIR/$RNAME3/* $TARGETDIR/$RID3/Nvram/$RNAME3
?? ???? sudo chown -R virtualcontroluser:virtualcontroluser $TARGETDIR/$RID3/Nvram/*
?? ?fi
else
?? ?echo "Aborting.."
?? ?exit
fi


 

¿ªÔÆÌåÓý

Use shared file operations


 

I've found many simpl+ programs have a leading slash in file paths that are coded and locked, which in Linux means from root.? I have had to create a file path to match what programs look for.? Example: /NVRAM