Environment
SUSE Linux Enterprise Desktop 10
SUSE Linux Enterprise Desktop 11
Novell iPrint Client for LinuxSituation
Attempting to upload a print driver from Firefox on a Linux machine returns this error:
Need to upgrade iPrint client to the latest version
When attempting to install an iPrint printer, no message or printer install occurs.
These problems occur with Firefox versions 4 and 5.
Resolution
There are two options to solve the problem:
Resolution Option 1. Upgrade Firefox to any of the newer versions 6, 7 or 8.
Resolution Option 2. Run a script to disable the iPrint browser plugin from running in a plugin-container.
- Paste the script found below into a text file.
- When copying the script below, do not include the equal signs.
- Give the script a name and an extension of .sh
- For example: iPrintPluginFix.sh
- Give the script file executable permissions.
- Example:
- chmod 775 iPrintPluginFix.sh
- Execute the script on the Linux workstation which has the problem.
- Example:
- ./iPrintPluginFix.sh
= = = = = = =
writeUserjsFile() {
home=$1;
firefoxDir="$home/.mozilla/firefox";
if [ -s $firefoxDir/profiles.ini ]
then
pathVar=`cat $firefoxDir/profiles.ini | grep Path | cut -d "=" -f2`
for i in $pathVar
do
temp=`echo $i | grep -e "/.*"`
if [ "$temp" == ""]
then
fullPath=$firefoxDir/$i
else
fullPath=$i
fi
userjsFile=$fullPath/user.js
dataExist=`grep libiprint-plugin \$userjsFile 2> /dev/null`
if [ "$dataExist" == ""]
then
echo 'user_pref("dom.ipc.plugins.enabled.libiprint-plugin.so", false);' >> $userjsFile
echo 'user_pref("dom.ipc.plugins.enabled.npnipp.so", false);' >> $userjsFile
echo 'user_pref("dom.ipc.plugins.enabled.libiprint-plugin32.so", false);' >> $userjsFile
echo 'user_pref("dom.ipc.plugins.enabled.npnipp32.so", false);' >> $userjsFile
fi
done
fi
}
#list all non-system users
allUsers=`awk -F: '{ if ( $3 >= 500 ) print $1}' /etc/passwd`
#write user.js for 'root' user
writeUserjsFile "/root" ;
#write user.js file for non-root users
for user in $allUsers
do
writeUserjsFile "/home/$user";
done
home=$1;
firefoxDir="$home/.mozilla/firefox";
if [ -s $firefoxDir/profiles.ini ]
then
pathVar=`cat $firefoxDir/profiles.ini | grep Path | cut -d "=" -f2`
for i in $pathVar
do
temp=`echo $i | grep -e "/.*"`
if [ "$temp" == ""]
then
fullPath=$firefoxDir/$i
else
fullPath=$i
fi
userjsFile=$fullPath/user.js
dataExist=`grep libiprint-plugin \$userjsFile 2> /dev/null`
if [ "$dataExist" == ""]
then
echo 'user_pref("dom.ipc.plugins.enabled.libiprint-plugin.so", false);' >> $userjsFile
echo 'user_pref("dom.ipc.plugins.enabled.npnipp.so", false);' >> $userjsFile
echo 'user_pref("dom.ipc.plugins.enabled.libiprint-plugin32.so", false);' >> $userjsFile
echo 'user_pref("dom.ipc.plugins.enabled.npnipp32.so", false);' >> $userjsFile
fi
done
fi
}
#list all non-system users
allUsers=`awk -F: '{ if ( $3 >= 500 ) print $1}' /etc/passwd`
#write user.js for 'root' user
writeUserjsFile "/root" ;
#write user.js file for non-root users
for user in $allUsers
do
writeUserjsFile "/home/$user";
done
= = = = = = =
Additional Information
Background:
Starting in Firefox 3.6.4 on Windows and Linux, a new crash protection feature isolates certain plugins from the browser process and sets those plugins to each run in a separate plugin-container process. Before this new "out-of-process plugins" ("OOPP") crash protection feature, a problem with a plugin (e.g, Adobe Flash) would often cause the entire Firefox browser to crash. When an "out-of-process plugin" stops working, Firefox can remain running and just the portions of a web page that need the plugin will be disabled.
What is a plugin container?
An out-of-process plugin runs in a separate process named "plugin-container". For each plugin for which the "OOPP" crash protection feature is enabled, a separate plugin-container process will be started when you first visit a web page that evokes that plugin. When you exit Firefox, those plugin-container processes will terminate.
Why iPrint plugin is not working in Firefox 4 and above? -
The answer lies in the above description. Experiments show that disabling the iPrint plugin from running in a plugin-container causes the printer driver upload and printer install work on Firefox versions 4 and 5. The plugins which is using NPAPI are by default enabled to run "out-of-process". iPrint plugin is also using NPAPI but for reasons currently not understood it still does not work when run "out-of-process".