https://wiki.archlinux.org/api.php?action=feedcontributions&user=S+tec&feedformat=atomArchWiki - User contributions [en]2024-03-28T12:47:44ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=CUPS/Printer-specific_problems&diff=593951CUPS/Printer-specific problems2020-01-04T20:56:58Z<p>S tec: /* Add Canon TS202 */</p>
<hr />
<div>[[Category:Printers]]<br />
[[ja:CUPS/プリンター別の問題]]<br />
[[ru:CUPS (Русский)/Printer-specific problems]]<br />
{{Related articles start}}<br />
{{Related|CUPS}}<br />
{{Related|CUPS/Troubleshooting}}<br />
{{Related articles end}}<br />
<br />
This article contains printer or manufacturer-specific instructions for [[CUPS]].<br />
See [http://www.openprinting.org/printers OpenPrinting] if your printer is not already listed here, or if none of the listed drivers work.<br />
<br />
{{Note|If you add a printer to this list, consider contributing your entry to [https://wiki.linuxfoundation.org/openprinting/database/databaseintro OpenPrinting] - that way users of other distributions will also benefit!}}<br />
<br />
== Brother ==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| DCP-135C || {{AUR|brother-dcp135c}} ||<br />
|-<br />
| DCP-150C || {{AUR|brother-dcp150c}} ||<br />
|-<br />
| DCP-7020 || [[foomatic]] || Or Brother's driver.<br />
|-<br />
| DCP-7030 || {{AUR|brother-dcp7030}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| DCP-7065DN || {{AUR|brother-dcp7065dn}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| DCP-J515W || {{AUR|brother-dcp-j515w}} ||<br />
|-<br />
| FAX-2820 || {{AUR|brother-cups-wrapper-laser}} ||<br />
|-<br />
| FAX-2840 || {{AUR|brother-fax2840}} || Or [[foomatic]] - works mostly with {{ic|hpijs-pcl5e.ppd}}. Same as the HL-2170W.<br />
|-<br />
| FAX-2940 || {{AUR|brother-fax2940}} ||<br />
|-<br />
| HL-2030 || [[foomatic]] || Or {{AUR|brother-hl2030}}<br />
|-<br />
| HL-2035 || [[foomatic]] || Should be compatible with any drivers for the HL-2030.<br />
|-<br />
| HL-2040 || [[foomatic]] || Or {{AUR|brother-hl2040}}<br />
|-<br />
| HL-2130 || [[foomatic]] (using the HL-2140 driver) || Or {{Pkg|hplip}}<br />
|-<br />
| HL-2135W || {{AUR|brother-brgenml1}} ||<br />
|-<br />
| HL-2140 || [[foomatic]] || Or {{AUR|brother-hl2140}}<br />
|-<br />
| HL-2170W || [[foomatic]] || Or Brother's driver. <br />
|-<br />
| HL-2230 || [[foomatic]] || Same as HL-2170W. Select HL-2170W as the driver in CUPS admin when adding a printer.<br />
|-<br />
| HL-2250DN || {{AUR|brother-brgenml1}} || {{AUR|brother-hl2250dn}} is broken?<br />
|-<br />
| HL-2270DW || {{AUR|brother-hl2270dw}} ||<br />
|-<br />
| HL-2280DW || {{AUR|brother-hl2280dw}} ||<br />
|-<br />
| HL-3045CN || Install Brother's driver. ||<br />
|-<br />
| HL-3140CW || {{AUR|brother-hl3140cw}} || Use IPP and Brother's driver to avoid page-shrinking and endless blank printouts<br />
|-<br />
| HL-3150CDW || {{AUR|brother-hl3150cdw}} ||<br />
|-<br />
| HL-3170CDW || {{AUR|brother-hl3170cdw}} ||<br />
|-<br />
| HL-4150CDN || {{AUR|brother-hl4150cdn}} ||<br />
|-<br />
| HL-5140 || [[foomatic]] || Or Brother's driver.<br />
|-<br />
| HL-5340 || [[foomatic]] || Using the ''Generic PCL 6/PCL XL Printer - CUPS+Gutenprint'' ({{Pkg|gutenprint}} and {{Pkg|foomatic-db-gutenprint-ppds}}). Or Brother's driver, which may result in failed prints with postscript errors.<br />
|-<br />
| HL-L2300D || {{AUR|brother-hll2300d}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| HL-L2340DW || {{AUR|brother-hll2340dw}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| HL-L2350DW || {{AUR|brother-hll2350dw}} ||<br />
|-<br />
| HL-L2360DN || {{AUR|brother-hll2360d}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| HL-L2360DW || {{AUR|brother-hll2360d}} || {{AUR|brlaser-git}} should works.<br />
|-<br />
| HL-L2365DW || {{AUR|brother-hll2360d}} || {{AUR|brlaser-git}} should works.<br />
|-<br />
| HL-L2380DW || {{AUR|brother-hll2380dw}} ||<br />
|-<br />
| HL-L2395DW || {{AUR|brother-hll2395dw}} || Use the {{ic|socket}} protocol as described in [[#Network printers]]<br />
|-<br />
| HL-L5100DN || HP LaserJet Foomatic driver || This model will emulate a HP LaserJet. Use the {{ic|lpd}} protocol as described in [[#Network printers]].<br />
|-<br />
| HL-L8360CDW || {{AUR|brother-hll8360cdw-cups-bin}} ||<br />
|-<br />
| MFC-420CN || {{AUR|brother-mfc-420cn}} ||<br />
|-<br />
| MFC-440CN || {{AUR|brother-mfc-440cn}} ||<br />
|-<br />
| MFC-7360N || {{AUR|brother-mfc7360n}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| MFC-7460DN || [[Gutenprint]] || Use the ''Generic PCL 6 Printer wide margin - CUPS+Gutenprint'' driver, with address {{ic|ipp://hostname-or-ip/pcl_p1}}.<br />
|-<br />
| MFC-7840W || {{AUR|brother-mfc-7840w}} || Or {{AUR|brlaser-git}}<br />
|-<br />
| MFC-9320CW || Install Brother's driver. ||<br />
|-<br />
| MFC-9332CDW || {{AUR|brother-mfc-9332cdw}} ||<br />
|-<br />
| MFC-9840CDW || [[foomatic]] || Or Brother's driver. This printer also works with the generic PCL-6 driver from the {{Pkg|gutenprint}} package. Use '''pcl_p1''' for the printer's address when using the PCL-6 driver.<br />
|-<br />
| MFC-J470DW || {{AUR|brother-mfc-j470dw}} || Use the {{ic|ipp}} protocol as described in [[#Network printers]].<br />
|-<br />
| MFC-J4710DW || {{AUR|brother-mfc-j4710dw}} ||<br />
|-<br />
| MFC-J480DW || {{AUR|brother-mfc-j480dw}} || Use the {{ic|ipp}} protocol as described in [[#Network printers]].<br />
|-<br />
| MFC-J5520DW || {{AUR|brother-mfc-j5520dw}} ||<br />
|-<br />
| MFC-J5910DW || {{AUR|brother-mfc-j5910dw}} ||<br />
|-<br />
| MFC-J650DW || Install Brother's driver. ||<br />
|-<br />
| MFC-J885DW || {{AUR|brother-mfc-j885dw}} ||<br />
|-<br />
| MFC-J985DW || {{AUR|brother-mfc-j985dw}} ||<br />
|-<br />
| MFC-L2700DW || {{AUR|brother-mfc-l2700dw}} || Please look also at the comments section of the AUR package page. <br />
|-<br />
| MFC-L2730DW || {{AUR|brother-mfc-l2730dw}} || Please look also at the comments section of the AUR package page. <br />
|-<br />
| MFC-L8600CDW || {{AUR|brother-mfc-l8600cdw}} || Please follow the instructions on the AUR page.<br />
|-<br />
| QL-500 || {{AUR|brother-ql500}} ||<br />
|-<br />
| QL-570 || {{AUR|brother-ql570}} ||<br />
|-<br />
| QL-580N || {{AUR|brother-ql580n}} ||<br />
|-<br />
| QL-650TD || {{AUR|brother-ql650td}} ||<br />
|-<br />
| QL-700 || {{AUR|brother-ql700}} ||<br />
|-<br />
| QL-710W || {{AUR|brother-ql710w}} ||<br />
|-<br />
| QL-720NW || {{AUR|brother-ql720nw}} ||<br />
|-<br />
| QL-1050 || {{AUR|brother-ql1050}} || <br />
|-<br />
| QL-1050N || {{AUR|brother-ql1050n}} ||<br />
|-<br />
| QL-1060 || {{AUR|brother-ql1060n}} ||<br />
|-<br />
| TD-2020 || {{AUR|brother-td2020}} ||<br />
|-<br />
| TD-2120N || {{AUR|brother-td2120n}} ||<br />
|-<br />
| TD-2130N || {{AUR|brother-td2130n}} ||<br />
|-<br />
| TD-4000 || {{AUR|brother-td4000}} ||<br />
|-<br />
| TD-4100N || {{AUR|brother-td4100n}} ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
=== Network printers ===<br />
<br />
For network printers, use {{ic|ipp://'''printer_ip'''/ipp/port1}} as printer address.<br />
For some older printers, this might not work. If not, try {{ic|lpd://'''printer_ip'''/BINARY_P1}} instead.<br />
<br />
Some printers use the socket protocol. For these printers, use {{ic|socket://'''printer_ip''':9100}}.<br />
For http, use {{ic|http://'''printer_ip'''/POSTSCRIPT_P1}}.<br />
<br />
=== Custom drivers ===<br />
<br />
Brother provides custom drivers on their website, either in source tarball, rpm, or deb form. [[Packaging Brother printer drivers]] covers creating [[PKGBUILD]]s from the existing RPM packages.<br />
<br />
{{Note|The source packages might be a better alternative to the rpm packages, provided they contain all the needed files.}}<br />
<br />
==== Manually installing from the RPM packages ====<br />
<br />
{{Warning|This should ideally be automated in a [[PKGBUILD]].}}<br />
<br />
[[Install]] the {{Pkg|rpmextract}} package, and extract both rpm packages using {{ic|rpmextract.sh}}. Extracting both files will create a var and a usr directory - move the contents of both directories into the corresponding root directories.<br />
<br />
Run the cups wrapper file in {{ic|/usr/local/Brother/cupswrapper}}. This should automatically install and configure your brother printer.<br />
<br />
For some of the drivers 32 bit libraries may need to be installed from [[multilib]].<br />
<br />
=== Updating the firmware ===<br />
<br />
[[Install]] {{Pkg|net-snmp}} and run:<br />
<br />
$ snmpwalk -c public $PRINTER_IP | grep -A 1 3.6.1.4.1.2435.2.4.3.99.3.1.6.1.2<br />
<br />
At this point, you will have the relevant data to get a valid firmware download link from Brother. The file should look similar to the one below:<br />
<br />
{{hc|request.xml|<br />
<REQUESTINFO><br />
<FIRMUPDATETOOLINFO><br />
<FIRMCATEGORY>MAIN</FIRMCATEGORY><br />
<OS>LINUX</OS><br />
<INSPECTMODE>1</INSPECTMODE><br />
</FIRMUPDATETOOLINFO><br />
<br />
<FIRMUPDATEINFO><br />
<MODELINFO><br />
<SELIALNO></SELIALNO><br />
<NAME>MFC-9330CDW</NAME><br />
<SPEC>0401</SPEC><br />
<DRIVER></DRIVER><br />
<FIRMINFO><br />
<FIRM><br />
<ID>MAIN</ID><br />
<VERSION>R1506121801:4504</VERSION><br />
</FIRM><br />
<FIRM><br />
<ID>SUB1</ID><br />
<VERSION>1.07</VERSION><br />
</FIRM><br />
<FIRM><br />
<ID>SUB2</ID><br />
<VERSION>L1505291600</VERSION><br />
</FIRM><br />
</FIRMINFO><br />
</MODELINFO><br />
<DRIVERCNT>1</DRIVERCNT><br />
<LOGNO>2</LOGNO><br />
<ERRBIT></ERRBIT><br />
<NEEDRESPONSE>1</NEEDRESPONSE><br />
</FIRMUPDATEINFO><br />
</REQUESTINFO><br />
}}<br />
<br />
Post this file to Brother:<br />
<br />
$ curl -X POST -d @request.xml https://firmverup.brother.co.jp/kne_bh7_update_nt_ssl/ifax2.asmx/fileUpdate -H "Content-Type:text/xml" > response.xml<br />
<br />
In {{ic|response.xml}} you will find a {{ic|<PATH>}} tag that contains the firmware download URL. Next, download the firmware, push it to the printer, and let the printer process it. Before that is done, change the Admin password to something known, it will be used as the user to log into the FTP site (VERY bad practice, do not do this). <br />
<br />
$ wget http://update-akamai.brother.co.jp/CS/LZ4266_W.djf<br />
$ ftp $PRINTER_IP|<br />
ftp> bin<br />
ftp> hash<br />
ftp> send LZ4266_W.djf<br />
ftp> bye<br />
<br />
With that, the printer will restart, and the latest firmware will be installed and (hopefully) your printing woes will be solved.<br />
<br />
== Canon ==<br />
<br />
There are many possible drivers for Canon printers. [http://gimp-print.sourceforge.net/p_Supported_Printers.php Many Canon printers] are supported by [[Gutenprint]]. Some of Canon's LBP, iR, and MF printers use a driver supporting the UFR II/UFR II LT/LIPSLX protocols, [[#UFRII]] . Others use the [[#CARPS]], or [[#cnijfilter]] ({{AUR|cnijfilter2}} / {{AUR|cnijfilter2-bin}}), or [[Canon CAPT]] drivers.<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| iP4300<br />
| [[Gutenprint]]<br />
| Or use the [http://www.turboprint.info/ TurboPrint] driver.<br />
|-<br />
| LBP810 || rowspan="34" | [[Canon CAPT]] ||<br />
|-<br />
| LBP1120 ||<br />
|-<br />
| LBP1210 ||<br />
|-<br />
| LBP2900 ||<br />
|-<br />
| LBP3000 ||<br />
|-<br />
| LBP3010 ||<br />
|-<br />
| LBP3018 ||<br />
|-<br />
| LBP3050 ||<br />
|-<br />
| LBP3100 ||<br />
|-<br />
| LBP3108 ||<br />
|-<br />
| LBP3150 ||<br />
|-<br />
| LBP3200 ||<br />
|-<br />
| LBP3210 ||<br />
|-<br />
| LBP3250 ||<br />
|-<br />
| LBP3300 ||<br />
|-<br />
| LBP3310 ||<br />
|-<br />
| LBP3500 ||<br />
|-<br />
| LBP5000 ||<br />
|-<br />
| LBP5050 series ||<br />
|-<br />
| LBP5100 ||<br />
|-<br />
| LBP5300 ||<br />
|-<br />
| LBP6000 ||<br />
|-<br />
| LBP6018 ||<br />
|-<br />
| LBP6020 ||<br />
|-<br />
| LBP6200 ||<br />
|-<br />
| LBP6300 ||<br />
|-<br />
| LBP6300n ||<br />
|-<br />
| LBP6310dn ||<br />
|-<br />
| LBP7010C ||<br />
|-<br />
| LBP7018C ||<br />
|-<br />
| LBP7200Cdn (network mode) ||<br />
|-<br />
| LBP7200C series ||<br />
|-<br />
| LBP7210Cdn ||<br />
|-<br />
| LBP9100C ||<br />
|-<br />
| MF216n (network over ldp) || rowspan="4" | {{AUR|cndrvcups-lb-bin}} ||<br />
|-<br />
| MF635Cx ||<br />
|-<br />
| MF4720w ||<br />
|-<br />
| MF4770n ||<br />
|-<br />
| MG4200 series || {{AUR|cnijfilter-mg4200}} || Avoid the [[CUPS#Web interface|web interface]] when adding the printer as it will not find the PPD file.<br />
|-<br />
| MX490 || rowspan="4" | {{AUR|cnijfilter2}}<br />{{AUR|cnijfilter2-bin}} ||<br />
|-<br />
| MX492 ||<br />
|-<br />
| TS202 ||<br />
|-<br />
| TS8050 || Without {{AUR|cnijfilter2}} printing will fail with a filter error or you might get "Rendering Completed" and nothing will print<br />
|-<br />
| TS9020 || {{AUR|canon-ts9020}} ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
Some Canon printers will use a similar setup to the iP4500, so consider modifying the {{AUR|cnijfilter-ip4500}} package for other, similar printers.<br />
<br />
=== UFRII ===<br />
<br />
Many LBP, iR, and MF printers use a protocol that has had several names over the years : UFR II, UFR II LT, LIPSLX .<br />
There are multiple packages for these printers in AUR, and atleast the imageCLASS MF4570dn and i-sensys MF633C are reported to only work with the older v3.70 version.<br />
<br />
{{AUR|cnrdrvcups-lb}} v 5.00 - latest version built from source<br />
<br />
{{AUR|cndrvcups-lb}} 3.70 and {{AUR|cndrvcups-common-lb}} 4.10 : older version built from source<br />
<br />
{{AUR|cndrvcups-lb-bin}} v3.70 uses canon provided binaries with location/config adjustments to make them work on archlinux<br />
<br />
=== CARPS ===<br />
<br />
Some of Canon's printers use Canon's proprietary CARPS (''Canon Advanced Raster Printing System'') driver.<br />
[http://www.rainbow-software.org/2014/01/23/cups-driver-for-canon-carps-printers/ Rainbow Software] have managed to reverse engineer the CARPS data format and have successfully created a CARPS CUPS driver, which is available as {{AUR|carps-cups}}.<br />
The project's [https://github.com/ondrej-zary/carps-cups GitHub] page includes a list of working printers.<br />
<br />
=== USB over IP (BJNP) ===<br />
<br />
Some Canon printers use Canon's proprietary USB over IP BJNP protocol to communicate over the network. There is a CUPS backend for this, which is available as {{AUR|cups-bjnp}}.<br />
<br />
=== cnijfilter ===<br />
<br />
Some printers using the cnijfilter drivers support the {{ic|cnijnet}} protocol. To find the [[CUPS#Printer URI|printer URI]] run<br />
<br />
$ cnijnetprn --search auto<br />
<br />
and use the {{ic|cnijnet:/}} URI in the output.<br />
<br />
{{Expansion|The URI appears to be of the form {{ic|cnijnet:/}} followed by the MAC address of the printer. If this is the case it would be good to mention it here.}}<br />
<br />
== Dell ==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| 1250C<br />
| {{AUR|foo2zjs-nightly}}<br />
| See http://cybercom.net/~dcoffin/hbpl, the patch has been merged into upstream. The printer may also work with the [[#Phaser 6000B|Xerox Phaser 6000B driver]].<br />
|-<br />
| C1660NW<br />
| {{AUR|foo2zjs-nightly}}<br />
| The printer may also work with the [[#Phaser 6000B|Xerox Phaser 6000B driver]].<br />
|-<br />
| E515,<br />
E515dw<br />
| Install [http://downloads.dell.com/FOLDER03040853M/1/Printer_E515dw_Driver_Dell_A00_LINUX.zip Dell's driver].<br />
| Both ''e515dwcupswrapper-3.2.0-1.i386.deb'' and ''e515dwlpr-3.2.0-1.i386.deb'' need to be installed. You could either write a [[PKGBUILD]], use {{AUR|debtap}}, or use {{Pkg|dpkg}} (using dpkg is not recommended as the files will not be managed by [[pacman]]). The driver works on both the x86_64 and i386 platforms, but may require [[multilib]].<br />
|-<br />
| S1130n || rowspan="16" | {{aur|dell-unified-driver}} || rowspan="16" | Driver conflicts with samsung-unified-driver-printer (as the dell-unified-driver appears to be based on the Samsung one, and they create several of the same files)<br />
|-<br />
|1130 ||<br />
|-<br />
|1133 ||<br />
|-<br />
|1135n ||<br />
|-<br />
|1815 ||<br />
|-<br />
|2145cn ||<br />
|-<br />
|2335dn ||<br />
|-<br />
|2355dn ||<br />
|-<br />
|5330 ||<br />
|-<br />
|B1160 ||<br />
|-<br />
|B1160w ||<br />
|-<br />
|B1165nfw ||<br />
|-<br />
|B1260dn ||<br />
|-<br />
|B1265dfw ||<br />
|-<br />
|B1265dnf ||<br />
|-<br />
|B2365dnf ||<br />
|-<br />
<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
== Epson ==<br />
<br />
{{AUR|epson-inkjet-printer-escpr}} and {{AUR|epson-inkjet-printer-escpr2}} are sets of drivers using the Epson Inkjet Printer Driver (ESC/P-R) for Linux.<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| AcuLaser CX11(NF) || {{AUR|epson-alcx11-filter}} ||<br />
|-<br />
| AcuLaser C900 || || This printer uses Epson's driver, with a device URI of ''''usb://EPSON/AL-C900'''', and may need the pipsplus service to be running.<br />
|-<br />
| EP-50V || rowspan="3" | {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| EP-879A ||<br />
|-<br />
| EP-880A ||<br />
|-<br />
| ET-2700 || rowspan="2" | {{AUR|epson-inkjet-printer-escpr}} ||<br />
|-<br />
| ET-2750 ||<br />
|-<br />
| ET-3700 || rowspan="4" | {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| ET-3750 ||<br />
|-<br />
| ET-3760 ||<br />
|-<br />
| ET-4750 ||<br />
|-<br />
| EW-M571T || {{AUR|epson-inkjet-printer-escpr}} ||<br />
|-<br />
| EW-M670FT || {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| L380 || rowspan="2" | {{AUR|epson-inkjet-printer-201601w}} ||<br />
|-<br />
| L382 ||<br />
|-<br />
| L4150 || rowspan="2" | {{AUR|epson-inkjet-printer-escpr}} ||<br />
|-<br />
| L4160 ||<br />
|-<br />
| L6160 || rowspan="3" | {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| L6170 ||<br />
|-<br />
| L6190 ||<br />
|-<br />
| LP-S5000 || || This printer requires a [[#Avasys|custom driver from Avasys]].<br />
|-<br />
| PM-520 || rowspan="11" | {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| PX-M5080F ||<br />
|-<br />
| PX-M5081F ||<br />
|-<br />
| PX-M680F ||<br />
|-<br />
| PX-M7070FX ||<br />
|-<br />
| PX-M780F ||<br />
|-<br />
| PX-M781F ||<br />
|-<br />
| PX-M884F ||<br />
|-<br />
| PX-S5080 ||<br />
|-<br />
| PX-S7070X ||<br />
|-<br />
| PX-S884 ||<br />
|-<br />
| TX125 || {{AUR|epson-inkjet-printer-n10-nx127}} ||<br />
|-<br />
| WF-3620 || {{AUR|epson-inkjet-printer-escpr}} ||<br />
|-<br />
| WF-3720 || rowspan="8" | {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| WF-4720 ||<br />
|-<br />
| WF-4730 ||<br />
|-<br />
| WF-4740 ||<br />
|-<br />
| WF-7210 ||<br />
|-<br />
| WF-7710 ||<br />
|-<br />
| WF-7720 ||<br />
|-<br />
| WF-C869R ||<br />
|-<br />
| XP-446 || {{AUR|epson-inkjet-printer-escpr}} ||<br />
|-<br />
| XP-5100 || rowspan="4" | {{AUR|epson-inkjet-printer-escpr2}} ||<br />
|-<br />
| XP-6000 ||<br />
|-<br />
| XP-8500 ||<br />
|-<br />
| XP-15000 ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
=== Utilities ===<br />
<br />
==== escputil ====<br />
<br />
escputil is part of the {{Pkg|gutenprint}} package, and performs some utility functions on Epson printers such as nozzle cleaning.<br />
<br />
==== mtink ====<br />
<br />
This is a printer status monitor which enables to get the remaining ink quantity, to print test patterns, to reset printer and to clean nozzle. It use an intuitive graphical user interface.<br />
<br />
==== Stylus-toolbox ====<br />
<br />
This is a GUI using escputil and cups drivers. It supports nearly all USB printer of Epson and displays ink quantity, can clean and align print heads and print test patterns.<br />
<br />
===Custom drivers===<br />
<br />
==== Avasys ====<br />
<br />
{{Warning|This section involves installing packages without [[pacman]]. These directions should ideally be automated with a [[PKGBUILD]].}}<br />
"Source" code of the driver is available on the [http://www.avasys.jp avasys website], in Japanese, however it includes a 32 bit binary which will cause problem on 64 bit system.<br />
<br />
* [[Install]] the {{Pkg|psutils}}, {{Pkg|bc}}, {{Pkg|libstdc++5}} packages ({{AUR|lib32-libstdc++5}} on 64bit).<br />
* Download the source code of the driver.<br />
* Compile and install the driver. <br />
<br />
$ ./configure --prefix=/usr<br />
$ make<br />
# make install<br />
<br />
If you have any problems on a 64 system, some other lib32 libraries may be required. Please adjust this page if that is the case.<br />
<br />
=== Adding missing paper sizes ===<br />
<br />
Some of the PPD files in {{AUR|epson-inkjet-printer-escpr2}} are missing paper size definitions for media that is supported by the printers and the filter. It is relatively straightforward to add the missing media types to the PPD files.<br />
<br />
To begin, download the PKGBUILD for the {{AUR|epson-inkjet-printer-escpr2}} package, either with an AUR helper or from a snapshot tarball. Once in the directory with the PKGBUILD, download and extract the source of the package by running {{ic|makepkg --nobuild}}.<br />
<br />
Change directory to to {{ic|src/epson-inkjet-printer-escpr2-$PKGVER}}. Open the file {{ic|src/optBase.h}} in a text editor for reference.<br />
<br />
Identify the PPD used by your printer in the {{ic|ppd}} directory. For example, a Workforce 7710 printer uses {{ic|Epson-WF-7710_Series-epson-escpr2-en.ppd}}. Let us call it {{ic|your_ppd_filename}}. Convert the relevant PPD to a PPD compiler source file using the {{ic|ppdi}} utility from the {{Pkg|cups}} package.<br />
<br />
$ ppdi -o your_ppd_filename.drv ppd/your_ppd_filename.ppd<br />
<br />
Open the newly-created {{ic|your_ppd_filename.drv}} in a text editor. Identify the section of the file with a lot of lines starting with {{ic|CustomMedia}}. Duplicate one such line to modify. For example:<br />
<br />
CustomMedia "Legal/US Legal" 612.00 1008.00 8.40 8.40 8.40 8.40 "<</PageSize[612.00 1008.00]/ImagingBBox null>>setpagedevice" "<</PageRegion[612.00 1008.00]/ImagingBBox null>>setpagedevice"<br />
<br />
The pair of numbers {{ic|612.00 1008.00}} represents the width and height of the paper in inches, multiplied by 72. Replace all three instances of these numbers with the dimensions of the paper you want to add. For example to add 11"x17" paper, replace the numbers with {{ic|792.00 1224.00}}.<br />
<br />
The string {{ic|"Legal/US Legal"}} identifies the paper. On the left side of the slash, {{ic|Legal}} is a magic identifier that the filter uses to identify the paper size. Replace it with the one you want to use. Refer to the {{ic|mediaSizeData}} array in {{ic|optBase.h}} for a list of possible values. The string to the right of the slash can be set to any human-readable value.<br />
<br />
If you want to enable borderless printing for a paper size, prefix the magic identifier string you just found with the letter T. So {{ic|Letter}} would become {{ic|TLetter}}. Additionally, change the four numbers {{ic|8.40 8.40 8.40 8.40}} to {{ic|0.00 0.00 0.00 0.00}}.<br />
<br />
For example, I was able to add 11x17 paper to the PPD for a Workforce 7710 by adding the following lines:<br />
<br />
CustomMedia "USB/US B(11x17 in)" 792.00 1224.00 8.40 8.40 8.40 8.40 "<</PageSize[792.00 1224.00]/ImagingBBox null>>setpagedevice" "<</PageRegion[792.00 1224.00]/ImagingBBox null>>setpagedevice"<br />
CustomMedia "TUSB/US B(11x17 in) (Borderless)" 792.00 1224.00 0.00 0.00 0.00 0.00 "<</PageSize[792.00 1224.00]/ImagingBBox null>>setpagedevice" "<</PageRegion[792.00 1224.00]/ImagingBBox null>>setpagedevice"<br />
<br />
Once you have added your custom size, recompile {{ic|your_ppd_filename.drv}} into a PPD file with ppdc (also from {{Pkg|cups}}):<br />
<br />
$ ppdc your_ppd_filename.drv<br />
<br />
This will create a ppd file in the {{ic|ppd}} directory with a file name derived from the {{ic|PCFileName}} parameter in {{ic|your_ppd_filename.drv}}. You can test this file by uploading it to the CUPS web interface, or install it permanently by overwriting the original PPD file and making the package with {{ic|makepkg}}.<br />
<br />
== HP ==<br />
<br />
See also [[CUPS/Troubleshooting#HP issues]].<br />
<br />
Most HP printers will use {{Pkg|hplip}}, but some may use {{AUR|hpoj}}. Some laser printers are also supported by {{AUR|foo2zjs-nightly}}.<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| DeskJet 710C || rowspan="8" | {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 712C ||<br />
|-<br />
| DeskJet 720C ||<br />
|-<br />
| DeskJet 722C ||<br />
|-<br />
| DeskJet 820se ||<br />
|-<br />
| DeskJet 820Cxi ||<br />
|-<br />
| DeskJet 1000Cse ||<br />
|-<br />
| DeskJet 1000Cxi ||<br />
|-<br />
| LaserJet P1606dn || {{Pkg|hplip}} + {{aur|hplip-plugin}} || Or {{aur|foo2zjs-nightly}}, or [[CUPS#CUPS|AirPrint]].<br />
|-<br />
| LaserJet Pro MFP M126nw || {{Pkg|hplip}} + {{aur|hplip-plugin}} ||<br />
|-<br />
| LaserJet Pro MFP M281fdw || {{Pkg|hplip}} || No proprietary drivers as of 2019-04-18 <br />
|-<br />
| Photosmart 2575 || {{Pkg|hplip}} || Or use the hpijs driver in [[foomatic]].<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
=== HPLIP ===<br />
<br />
{{Note|As of hplip v3.17.11 hpijs is not longer available. If you have printers using hpijs they will fail to print. You must modify them and select the new hpcups driver instead.}}<br />
<br />
{{Pkg|hplip}} provides drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet, and some LaserJet printers, and also provides an easy to use setup tool. See https://developers.hp.com/hp-linux-imaging-and-printing/supported_devices/index for the list of supported printers.<br />
<br />
To run the setup tool with the GUI qt frontend:<br />
<br />
# hp-setup -u<br />
<br />
To run the setup tool with the command line frontend:<br />
<br />
# hp-setup -i<br />
<br />
To set up directly the configuration of a network connected HP printer:<br />
<br />
# hp-setup -i ''ip_address''<br />
<br />
To run systray spool manager:<br />
<br />
$ hp-systray<br />
<br />
To generate a URI for a given ip address:<br />
<br />
# hp-makeuri ''<ip address>''<br />
<br />
PPD files are in {{ic|/usr/share/ppd/HP/}}.<br />
<br />
If your printer is [https://developers.hp.com/hp-linux-imaging-and-printing/binary_plugin.html listed as requiring a binary plugin], install the {{AUR|hplip-plugin}} package from [[AUR]].<br />
If the binary plugin {{AUR|hplip-plugin}} is a requirement you will need to [[start]] the {{ic|org.cups.cupsd.service}} before the PPD is recognized by {{{kg|hplip}}.<br />
<br />
{{Note|{{Pkg|hplip}} depends on {{Pkg|foomatic-db-engine}} which prevents the drivers list from appearing when a printer is added to CUPS via the web user interface (following error : "Unable to get list of printer drivers"). Possible workarounds:<br />
* '''Either:''' Install {{Pkg|hplip}} first, then retrieve the PPD file that matches your printer from {{ic|/usr/share/ppd/HP/}}. Next, remove {{Pkg|hplip}} entirely as well as any unnecessary dependencies. Finally, install the printer manually using the CUPS web UI, selecting the PPD file you retrieved, and then re-install {{Pkg|hplip}}. After a reboot, you should have a fully working printer.<br />
* '''Or:''' Remove {{Pkg|hplip}}, {{Pkg|foomatic-db}} and {{Pkg|foomatic-db-engine}} along with any unnecessary dependencies. Reinstall {{Pkg|hplip}} and restart CUPS. Install your printer using the CUPS web UI, which should now be able to find the drivers automatically. No reboot needed.}}<br />
<br />
=== foo2zjs ===<br />
<br />
[http://foo2zjs.rkkda.com/ foo2zjs] supports some HP LaserJet printers. As of June 2018 the hplip package interferes with {{aur|foo2zjs-nightly}}, as described at [https://bbs.archlinux.org/viewtopic.php?pid=1662809 this forum post] and {{Bug|58815}}.<br />
<br />
== Kodak ==<br />
<br />
{{AUR|c2esp}} is free software. [https://sourceforge.net/projects/cupsdriverkodak/ Upstream notes] it is likely to work on all ESP and Hero printers/scanners.<br />
<br />
== Konica Minolta ==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Minolta Magicolor 1600W || rowspan=7 | [[foomatic]] ||<br />
|-<br />
| Minolta Magicolor 1680MF ||<br />
|-<br />
| Minolta Magicolor 1690MF ||<br />
|-<br />
| Minolta Magicolor 2480MF ||<br />
|-<br />
| Minolta Magicolor 2490MF ||<br />
|-<br />
| Minolta Magicolor 2530DL ||<br />
|-<br />
| Minolta Magicolor 4690MF ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
=== foo2zjs ===<br />
<br />
[[#foo2zjs]], mentioned above for supporting some HP printers, also support some Minolta printers.<br />
<br />
== Lexmark ==<br />
<br />
Note that most Lexmark printers are now supported by CUPS without needing further installation. See also [[SANE/Scanner-specific problems#Lexmark]] for Lexmark scanners issues.<br />
<br />
=== Utilities ===<br />
<br />
Lexmark provides a utility called ''lexijtools'' with the drivers.<br />
<br />
=== Custom drivers ===<br />
<br />
Lexmark does provide Linux drivers for all their hardware.<br />
The following packages are required:<br />
<br />
* {{Pkg|cups}}<br />
* {{Pkg|sane}}<br />
* {{Pkg|ncurses}}<br />
* {{Pkg|libusb}}<br />
* {{Pkg|libxext}}<br />
* {{Pkg|libxtst}}<br />
* {{Pkg|libxi}}<br />
* {{Pkg|libstdc++5}}<br />
* {{Pkg|krb5}}<br />
* {{Pkg|lua}} (for the automated installer)<br />
* [[Java]] (for the automated installer, and some of the Lexmark tools)<br />
<br />
The drivers will need to be [http://support.lexmark.com/index?page=driversdownloads downloaded] from Lexmark's website. Preferably, create a package (see [[Creating packages]]) and install it. Here is a basic [[PKGBUILD]] that still needs work but will give an idea of what is required.<br />
<br />
{{hc|PKGBUILD|<nowiki><br />
# Contributor: Todd Partridge (Gen2ly) toddrpartridge (at) yahoo<br />
<br />
pkgname=cups-lexmark-Z2300-2600<br />
pkgver=1<br />
pkgrel=1<br />
pkgdesc="Lexmark Z2300 and 2600 Series printer driver for cups"<br />
arch=('i686')<br />
url="http://www.lexmark.com/"<br />
license=('custom')<br />
depends=('cups' 'glibc' 'ncurses' 'libusb' 'libxext' 'libxtst' 'libxi' 'libstdc++5' 'krb5' 'lua' 'java-runtime')<br />
conflicts=('z600' 'cjlz35le-cups' 'cups-lexmark-700')<br />
source=(lexmark-inkjet-08-driver-1.0-1.i386.tar.gz.sh)<br />
md5sums=(3c37eb87e3dad4853bf29344f9695134)<br />
<br />
package() {<br />
# Extract installer<br />
sh lexmark-inkjet-08-driver-1.0-1.i386.tar.gz.sh --target Installer-Files<br />
cd Installer-Files<br />
mkdir Driver<br />
tar xvvf instarchive_all --lzma -C Driver/<br />
cd Driver<br />
tar xv lexmark-inkjet-08-driver-1.0-1.i386.tar.gz -C $pkgdir<br />
}<br />
</nowiki>}}<br />
<br />
Keep in mind you can use the automated installer but doing so will leave the resulting changes untracked. The PPD will be installed into {{ic|/usr/local/lexmark/lxk08/etc/}} or similar, depending on the printer model.<br />
<br />
== Oki ==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| C110|| [[foomatic]] ||<br />
|-<br />
| MC561|| [[CUPS#Foomatic|foomatic-db-nonfree]] ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
== Ricoh ==<br />
<br />
Install {{AUR|openprinting-ppds-pxlmono-ricoh}} if your device is black and white, or {{AUR|openprinting-ppds-pxlcolor-ricoh}} if it is color. Note that Ricoh copiers are sometimes branded as Savin, Gestetner, Lanier, Rex-Rotary, Nashuatec, and/or IKON. So, if you have a device bearing one of these brands, it may be supported by these drivers as well.<br />
<br />
* [https://www.openprinting.org/driver/pxlmono-Ricoh List of supported black and white models]<br />
* [https://www.openprinting.org/driver/pxlcolor-Ricoh List of supported color models]<br />
<br />
For cheap [[Wikipedia:en:Graphics_Device_Interface#GDI printers|GDI-only winprinters]], which do not support PCL (Ricoh series SP100 and SP200) try out {{AUR|ricoh-sp100-git}}.<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| SP 112 || {{AUR|ricoh-sp100-git}} ||<br />
|-<br />
| SP 201n || {{AUR|ricoh-sp100-git}} ||<br />
|-<br />
| 213W || ''Generic PCL Laser'' || Obtain a WPS code by holding down the wifi button for 2 seconds, then hitting the stop/start button.<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
== Samsung ==<br />
<br />
Since 2016, or 2017, Samsung is no longer in the printers/scanners business. As of 2019, HP partially support some of Samsung printers/scanners. Before 2016, Samsung was a major player. Which is why there are still many Samsung machines around. In addition, Linux, and cups, keep evolving. The bottom line of all this is that supporting Samsung products is at a flux.<br />
<br />
A major site for information about Samsung printers/scanners is [https://www.bchemnet.com/suldr/ Samsung Unified Linux Driver Repository]. Despite its name, it is not affiliated by Samsung. Neither it is devoted only to {{AUR|samsung-unified-driver}}. {{ic|samsung-unified-driver}}, on the other hand, is close source by Samsung. It also encompass Windows and Mac. It might be the first stop to get a driver for a Samsung printer and scanner as it, or was, claim to support practically every one of these. Note that {{ic|samsung-unified-driver}} includes software that can stand on its own, not tied to cups. If you can not get the printer to work with cups, you might try this route.<br />
<br />
That said, there are more options. An overview is at [https://www.bchemnet.com/suldr/alternatives.html alternatives].<br />
<br />
* Out of CJX-XXX series, at least CJX-1000, CJX-1050W, and CJX-2000FW are reported to work with {{AUR|c2esp}}, even though {{ic|c2esp}} is supposedly for Kodak products. <br />
* For [http://www.undocprint.org/formats/page_description_languages/spl Samsung Printer Language], there is {{Pkg|splix}}. For a list of models that are supported, see its [http://splix.ap2c.org/ home page]. Other SPL Samsung printers, even tough not in that list, might work with {{ic|splix}}. <br />
* QPDL (Quick Page Description Language) printers, some of which are supported by {{ic|splix}}, are also supported by by {{ic|foo2qpdl}}, provided by the [[#foo2zjs]] package. A list of known to work models is [http://www.foo2qpdl.rkkda.com/ here].<br />
All of {{ic|c2esp}}, {{ic|splix}} and {{ic|foo2zjs}} are free software.<br />
<br />
You should also note that many Samsung printers support PostScript. Chances are that it will work with CUPS generic postscript printer, especially if it is only black & white and only printer, without a scanner added to it. Generic driver may be missing functionality or limited, for example in their support for duplex, color control, and resolution settings, and print quality may be lower.<br />
<br />
== Xerox or FujiXerox ==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| DocuPrint 203A || {{Pkg|hplip}} || Using the '''DocuPrint P8e(hpijs)''' driver, or the Brother driver on FujiXerox's website (see [[#Brother]] for more information on how to install custom Brother drivers).<br />
|-<br />
| Phaser 3100MFP || Install Xerox's driver || See [[#Phaser 3100MFP]] for more instructions.<br />
|-<br />
| Phaser 6115MFP || [[foomatic]] ||<br />
|-<br />
| Phaser 6121MFP || [[foomatic]] ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
=== Custom drivers ===<br />
<br />
==== Phaser 3100MFP ====<br />
<br />
{{Warning|This section involves installing packages without [[pacman]]. These directions should ideally be automated with a [[PKGBUILD]].}}<br />
<br />
Once you have downloaded the drivers, execute the driver installer and accept the licence:<br />
<br />
# cd printer<br />
# ./XeroxPhaser3100.install<br />
<br />
Note that the driver is 32 bit, so some 32 bit libraries will be required on an x86_64 system.<br />
<br />
For the scanner, create an {{ic|/etc/sane.d}} directory if it does not already exist, because it is needed by the installer:<br />
<br />
# mkdir -p /etc/sane.d<br />
<br />
Now install the driver:<br />
<br />
# cd scanner/<br />
# ./XeroxPhaser3100sc.install<br />
<br />
Again, on an x86_64 install, 32 bit libraries will be needed.<br />
<br />
==== Phaser 6000B ====<br />
<br />
[[Install]] the [https://github.com/aur-archive/xerox-phaser-6010 xerox-phaser-6010] package (archived from the AUR).<br />
The driver may require older versions of {{Pkg|nettle}} and {{Pkg|gnutls}} to be installed, since the binary blob linked against older versions of the shared libraries provided by those packages. The oldest known-good versions are {{ic|nettle-2.7.1-1}} and {{ic|gnutls-3.3.13-1}}.<br />
<br />
==== Phaser 6125N ====<br />
<br />
{{Warning|This section involves installing packages without [[pacman]]. These directions should ideally be automated with a [[PKGBUILD]].}}<br />
<br />
FujiXerox does not support Linux on this model. An old rpm [http://onlinesupport.fujixerox.com/tiles/common/hc_drivers_download.jsp?system=%27Linux%27&shortdesc=null&xcrealpath=http://www.fujixeroxprinters.com/downloads/uploaded/dpc525a_linux_.0.0.tar_81c2.zip is available] but does not seem to work.<br />
<br />
A slightly adapted [https://rickvanderzwet.nl/trac/personal/wiki/XeroxPhaser6125N custom driver] has been found to work out of the box.<br />
<br />
To install the tarball, run:<br />
<br />
# tar -C / --keep-newer-files -xvzf cups-xerox-phaser-6125n-1.0.0.tar.gz</div>S techttps://wiki.archlinux.org/index.php?title=Browser_plugins&diff=371296Browser plugins2015-04-27T02:30:04Z<p>S tec: /* Adobe Flash Player */</p>
<hr />
<div>[[Category:Web Browser]]<br />
[[de:Browser Plugins]]<br />
[[es:Browser Plugins]]<br />
[[fr:Plugins navigateur]]<br />
[[ja:ブラウザプラグイン]]<br />
[[ru:Browser plugins]]<br />
[[tr:Web tarayıcı eklentileri]]<br />
[[zh-CN:Browser plugins]]<br />
{{Related articles start}}<br />
{{Related|Opera}}<br />
{{Related|Firefox}}<br />
{{Related|Chromium}}<br />
{{Related articles end}}<br />
<br />
There are two types of browser plugins, based on the plugin API they <br />
use:<br />
*Netscape plugin API (NPAPI): these plugins work in [[Firefox]] and most other browsers ('''not''' in Chromium and Opera).<br />
*Pepper plugin API (PPAPI): these plugins work only in [[Chromium]] (and Chrome) and [[Opera]].<br />
<br />
Most plugins on this page are NPAPI-only, unless noted otherwise.<br />
<br />
== Flash Player ==<br />
<br />
=== Shumway ===<br />
<br />
[http://mozilla.github.io/shumway/ Shumway] is an HTML5 technology experiment that explores building a faithful and efficient renderer for the SWF file format without native code assistance. As of 2013-01-01, the plugin may be installed directly from [http://mozilla.github.io/shumway/ Mozilla's github.io site]. According to the [https://github.com/mozilla/shumway/wiki Shumway wiki], "Integration with Firefox is a possibility if the experiment proves successful." <br />
<br />
Shumway is also embedded in Firefox Nightly/Aurora builds.<br />
<br />
=== Gnash ===<br />
<br />
See also [[Wikipedia:Gnash]].<br />
<br />
[http://www.gnu.org/software/gnash/ GNU Gnash] is a free (libre) alternative to Adobe Flash Player. It is available both as a standalone player for desktop computers and embedded devices, as well as a browser plugin, and supports the SWF format up to version 7 (with versions 8 and 9 under development) and about 80% of ActionScript 2.0.<br />
<br />
There are multiple packages available in the [[AUR]]: {{AUR|gnash}}, {{AUR|gnash-kde4}}, {{AUR|gnash-git}}.<br />
<br />
{{Note|If you find that Gnash does not work properly right out of the box, then you may also need to [[pacman|install]] {{Pkg|gstreamer0.10-ffmpeg}} from the [[official repositories]].}}<br />
<br />
=== Lightspark ===<br />
<br />
[http://lightspark.github.com/ Lightspark] is another attempt to provide a free alternative to Adobe Flash aimed at supporting newer Flash formats. Lightspark has the ability to fall back on Gnash for old content, which enables users to install both and enjoy wider coverage. Although it is still very much in development, it supports some [https://github.com/lightspark/lightspark/wiki/Site-Support popular sites]. <br />
<br />
Lightspark can be [[pacman|installed]] with the package {{AUR|lightspark}} or {{AUR|lightspark-git}}, available in the [[AUR]].<br />
<br />
=== Adobe Flash Player ===<br />
<br />
==== Installation ====<br />
<br />
The package you will need to install depends on the browser you use.<br />
<br />
* The NPAPI version can be [[pacman|installed]] with the {{Pkg|flashplugin}} package from the official repositories. This plugin was [https://blogs.adobe.com/flashplayer/2012/02/adobe-and-google-partnering-for-flash-player-on-linux.html discontinued by Adobe] and is stuck at version 11.2; although, Adobe will provide security updates for 5 years after its release (i.e. until March 2017[https://blogs.adobe.com/flashplayer/2012/02/adobe-and-google-partnering-for-flash-player-on-linux.html][http://helpx.adobe.com/flash-player/release-note/release-notes-developer-flash-player.html]).<br />
<br />
* The PPAPI version is shipped with Google Chrome. If you are using Chromium or any other browser using the PPAPI interface, see [[Chromium#Flash Player plugin]] for more information.<br />
<br />
{{Note|<br />
* Some Flash apps may require {{AUR|ttf-ms-fonts}} from the [[AUR]] in order to properly render text.<br />
* {{AUR|freshplayerplugin-git}} from the [[AUR]] provides an ''experimental'' adapter to use {{AUR|chromium-pepper-flash}} with NPAPI based browsers like Firefox.<br />
}}<br />
<br />
==== Upgrade ====<br />
<br />
If you are using [[Firefox]], please make sure to follow [[Firefox#Firefox detects the wrong version of my plugin|this instruction first]].<br />
<br />
==== Configuration ====<br />
<br />
To change the preferences (privacy settings, resource usage, etc.) of Flash Player, right click on any embedded Flash content and choose ''Settings'' from the menu, or go to the [http://helpx.adobe.com/flash-player/kb/find-version-flash-player.html Adobe website]. There, a Flash animation will give you access to your local settings.<br />
<br />
You can also use the Flash settings file {{ic|/etc/adobe/mms.cfg}}.<br />
<br />
{{Warning|Flash hardware acceleration could be still unstable. See [https://forums.adobe.com/thread/911321]}}<br />
<br />
To enable [[VDPAU]], uncomment the following line:<br />
<br />
EnableLinuxHWVideoDecode=1<br />
<br />
A more detailed example configuration:<br />
<br />
{{hc|/etc/adobe/mms.cfg|2=<br />
AVHardwareDisable = 0<br />
FullScreenDisable = 0<br />
LocalFileReadDisable = 1<br />
FileDownloadDisable = 1<br />
FileUploadDisable = 1<br />
LocalStorageLimit = 1<br />
ThirdPartyStorage = 1<br />
AssetCacheSize = 10<br />
AutoUpdateDisable = 1<br />
LegacyDomainMatching = 0<br />
LocalFileLegacyAction = 0<br />
AllowUserLocalTrust = 0<br />
# DisableSockets = 1 <br />
OverrideGPUValidation = 1<br />
DisableDeviceFontEnumeration = 1 #Prevent sites to identify you by snooping the installed fonts<br />
}}<br />
<br />
You can also refer to the [http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/www-plugins/adobe-flash/files/mms.cfg mms.cfg from Gentoo], which is extensively commented.<br />
<br />
==== Disable the "Press ESC to exit full screen mode" message ====<br />
<br />
There is no solution other than patching the Flash plugin. Please note only the NPAPI plugin is supported. Install {{aur|flash-fullscreen-patcher}} which provides wine as a required dependency since the patch has been initially made for Windows.<br />
<br />
After the package has been installed, backup {{ic|libflashplayer.so}}:<br />
# cp /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so.backup <br />
<br />
Then, patch {{ic|libflashplayer.so}}:<br />
# flash-fullscreen-patcher.sh -f /usr/lib/mozilla/plugins/libflashplayer.so<br />
<br />
If you use Firefox and want to remove the message ''Press ESC to exit full screen mode'' in HTML5 videos too, go to {{ic|about:config}} and set {{ic|full-screen-api.approval-required}} to {{ic|false}}.<br />
<br />
==== Multiple monitor full-screen fix ====<br />
<br />
When using a multiple monitor setup, or swapping between virtual desktops, it is possible to lose focus on a fullscreen flash window. In such a case, the adobe flash-plugin will automatically exit full-screen mode. This may not be to your liking.<br />
<br />
Unfortunately, this behavior is hard coded into the binary. In order to change this behavior it is necessary to alter the binary.<br />
<br />
Fixing this issue only works for the NPAPI plugin and this issue can be fixed via 3 ways.<br />
<br />
* Using {{aur|flash-fullscreen-patcher}} which providess wine as a required dependency since the patch has been initially made for Windows.<br />
<br />
:After the package has been installed, backup {{ic|libflashplayer.so}}:<br />
:{{bc|# cp /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so.backup}}<br />
<br />
:Then, patch libflashplayer.so:<br />
:{{bc|# flash-fullscreen-patcher.sh -i /usr/lib/mozilla/plugins/libflashplayer.so}}<br />
<br />
* Using the {{AUR|flashplugin-focusfix}}.<br />
<br />
* [http://www.webupd8.org/2012/10/ubuntu-multi-monitor-tweaks-full-screen.html Patching manually]:<br />
<br />
:After the package has been installed, backup {{ic|libflashplayer.so}}:<br />
:{{bc|# cp /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so.backup}}<br />
<br />
:Then, you will need to alter that file using a hex editor like {{Pkg|ghex}}. You must open it with root privileges obviously.<br />
:{{bc|# ghex /usr/lib/mozilla/plugins/libflashplayer.so}}<br />
<br />
:Using the hex editor find the string {{ic|_NET_ACTIVE_WINDOW}}. In ghex the readable string is on the right hand side of the window, and the hex is on the left, you are trying to locate the readable string. It should be easy to find using a search function.<br />
<br />
:Upon finding {{ic|_NET_ACTIVE_WINDOW}} rewrite the line, but '''do not''' change the length of the line, for example {{ic|_NET_ACTIVE_WINDOW}} becomes {{ic|_XET_ACTIVE_WINDOW}}.<br />
<br />
:Save the binary, and restart any processes using the plugin (as this will crash any instance of the plugin in use.)<br />
<br />
==== Fullscreen fix for GNOME 3 ====<br />
<br />
If you have problems with Flash's fullscreen-mode (video freezes but audio keeps playing), then it is probably because the fullscreen flash window is displayed ''behind'' the browser window. This is a [https://bugzilla.gnome.org/show_bug.cgi?id=722743 known upstream bug in mutter]. You can easily fix this by using [[Wikipedia:Devil's Pie (software)|devilspie]]:<br />
<br />
Install {{Pkg|devilspie}} from the official repositories.<br />
<br />
Create the {{ic|~/.devilspie}} directory:<br />
<br />
# mkdir ~/.devilspie<br />
<br />
Now you have to create a config file for each browser you use (see below)<br />
<br />
Finally, add devilspie to your list of startup items by adding the following file to {{ic|~/.config/autostart}}<br />
{{hc|~/.config/autostart/devilspie.desktop|2=<br />
[Desktop Entry]<br />
Name=devilspie<br />
Exec=devilspie<br />
Hidden=false<br />
NoDisplay=false<br />
X-GNOME-Autostart-enabled=true<br />
}}<br />
<br />
===== Firefox =====<br />
<br />
{{hc|~/.devilspie/flash-fullscreen-firefox.ds|2=<br />
(if<br />
(is (application_name) "plugin-container")<br />
(begin<br />
(focus)<br />
)<br />
)<br />
}}<br />
<br />
===== Chrome / Chromium =====<br />
<br />
{{hc|~/.devilspie/flash-fullscreen-chrome.ds|2=<br />
(if<br />
(is (application_name) "exe")<br />
(begin<br />
(focus)<br />
)<br />
)<br />
}}<br />
<br />
===== Epiphany / GNOME Web =====<br />
<br />
{{hc|~/.devilspie/flash-fullscreen-epiphany.ds|2=<br />
(if<br />
(is (application_name) "WebKitPluginProcess")<br />
(begin<br />
(focus)<br />
)<br />
)<br />
}}<br />
<br />
==== Playing DRM-protected content ====<br />
<br />
To play DRM-protected content from sources like Google Play or Amazon Video, install the {{AUR|hal-flash}} package from the AUR. Adobe Flash Player uses HAL as part of its DRM implementation, but most modern systems do not need HAL. As a work-around, this library implements just the parts of HAL needed to make Flash Player work correctly.<br />
<br />
=== Video players workarounds ===<br />
<br />
==== Open-with Firefox extension ====<br />
<br />
# Install [https://addons.mozilla.org/en-US/firefox/addon/open-with/ Open-with] add-on.<br />
# Open {{ic|about:openwith}}, select ''Add...''<br />
# In the dialog select a video streaming capable player (e.g. [[mpv|/usr/bin/mpv]]).<br />
# (Optional step) Add needed arguments to the player (e.g. you may want {{ic|--force-window --ytdl}} for ''mpv'')<br />
# (Optional step) Choose how to display the dialogs using the left panel.<br />
# Right click on links or visit pages containing videos. If the site is supported, the player will open as expected.<br />
<br />
The same procedure can be used to associate video downloaders such as ''youtube-dl''.<br />
<br />
== PDF viewer ==<br />
<br />
=== PDF.js ===<br />
<br />
[https://mozillalabs.com/en-US/pdfjs/ PDF.js] is a PDF renderer created by Mozilla and built using HTML5 technologies.<br />
<br />
For [[Firefox]] it is available as a [https://addons.mozilla.org/en-US/firefox/addon/pdfjs/ plugin], which is included in [[Firefox]] since version 19.<br />
<br />
For [[Chromium]] and Google Chrome there is an experimental extension in the [https://chrome.google.com/webstore/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm Chrome web store] or alternatively it can be built from the source of [https://github.com/mozilla/pdf.js Pdf.js].<br />
<br />
=== External PDF viewers ===<br />
<br />
To use an external PDF viewer you need [[#MozPlugger]] or [[#kpartsplugin]].<br />
<br />
If you want to use MozPlugger with Evince, for example, you have to find the lines containing {{ic|pdf}} in the {{ic|/etc/mozpluggerrc}} file and modify the corresponding line after {{ic|GV()}} as below:<br />
repeat noisy swallow(evince) fill: evince "$file"<br />
(replace {{ic|evince}} with something else if it is not your viewer of choice).<br />
<br />
If this is not enough, you may need to change 2 values in {{ic|about:config}}:<br />
* Change {{ic|pdfjs.disabled}}'s value to ''true'';<br />
* Change {{ic|plugin.disable_full_page_plugin_for_types}}'s value to an empty value.<br />
<br />
Restart and it should work like a charm!<br />
<br />
=== Adobe Reader ===<br />
{{Note|Adobe Reader for Linux is discontinued[http://www.omgubuntu.co.uk/2014/10/adobe-reader-linux-download-pulled-website] and the outdated version that is still available cannot easily run in a 64-bit browser.}}<br />
Due to licensing restrictions, Adobe Reader is only available in the [[AUR]].<br />
<br />
Adobe Acrobat Reader is only available as a 32-bit binary. It can be installed with the {{AUR|acroread}} package, available in the [[AUR]]. This package installs the Acrobat Reader application as well as the NPAPI plugin.<br />
<br />
Also, there are [https://aur.archlinux.org/packages.php?O=0&K=acroread-&do_Search=Go localizations] available in many languages.<br />
<br />
==== 64-bit ====<br />
<br />
There is no 64-bit version of Adobe Reader available. To use it in a 64-bit environment, you can:<br />
* Follow [[Install bundled 32-bit system in Arch64|this guide]] originally posted in the forums. It involves creating a chrooted environment that could be reused for other 32-bit only applications.<br />
<br />
* Install {{AUR|acroread}} (with all its 32-bit dependencies) from [[AUR]]. Be advised that the [[Firefox]] plugin cannot be used ''directly'' with this binary -- it will not load in the 64-bit browser. To load it install the {{Pkg|nspluginwrapper}} package from the official [[Multilib|[multilib]]] repository and run:<br />
$ nspluginwrapper -v -a -i<br />
as a normal user. This checks the plugin directory and links the plugins as needed.<br />
<br />
== Citrix ==<br />
<br />
See [[Citrix]].<br />
<br />
== Java (IcedTea) ==<br />
<br />
{{Note|Both Java plugins are NPAPI-only and thus do not work in Chromium and Opera.}}<br />
<br />
To enable [[Java]] support in your browser, you have two options: the open-source [[Wikipedia:OpenJDK|OpenJDK]] (recommended) or Oracle's proprietary version. For details about why OpenJDK is recommended see [https://mailman.archlinux.org/pipermail/arch-general/2011-August/021671.html this].<br />
<br />
To use OpenJDK, you have to install the [http://icedtea.classpath.org/wiki/Main_Page IcedTea] browser plugin, {{Pkg|icedtea-web}}.<br />
<br />
If you want to use Oracle's JRE, install the {{AUR|jre}} package, available in the [[AUR]].<br />
<br />
See [[Java#OpenJDK]] for additional details and references.<br />
<br />
{{Note|If you experience any problems with the Java plugin (e.g. it is not recognized by the browser), you can try this [[Flash#Plugins_are_installed_but_not_working|solution]].}}<br />
<br />
== Pipelight ==<br />
<br />
See [[Pipelight]].<br />
<br />
== Multimedia playback ==<br />
<br />
Many browsers support the [[GStreamer]] framework to play multimedia inside HTML5 {{ic|<audio>}} and {{ic|<video>}} elements. Check the optional dependencies of the browser package (or {{Pkg|webkitgtk}}/{{Pkg|webkitgtk2}} if using a webkit-based browser) to see which version of GStreamer is supported: this can be either {{ic|gst-*}} for the current version, or {{ic|gstreamer0.10-*}} for the legacy version. See [[GStreamer#Installation]] for the description of each plugin.<br />
<br />
=== Other plugins ===<br />
<br />
* {{App|Gecko Media Player|Mozilla browser plugin to handle media on websites, using MPlayer.|https://sites.google.com/site/kdekorte2/gecko-mediaplayer|{{Pkg|gecko-mediaplayer}}}}<br />
* {{App|Totem Plugin|Browser plugin based on the [[Wikipedia:Totem (software)|Totem]] media player for [[Gnome]] which uses [[Gstreamer]].|http://projects.gnome.org/totem/|{{Pkg|totem}}}}<br />
* {{App|Rosa Media Player Plugin|Qt-based browser plugin also based on MPlayer.|https://abf.rosalinux.ru/uxteam/ROSA_Media_Player|{{AUR|rosa-media-player-plugin}}}}<br />
* {{App|VLC Plugin|NPAPI-based plugin that uses VLC technologies.|http://git.videolan.org/?p&#61;npapi-vlc.git;a&#61;summary|{{AUR|npapi-vlc-git}}}}<br />
<br />
== Other ==<br />
<br />
=== Hangouts ===<br />
<br />
Hangouts plugin can be installed with the {{AUR|google-talkplugin}} package from the [[AUR]].<br />
It is messanger by Google, that allows you much more than Skype, for example, it is possible to do some things together: watching youtube, making diagramms, editing documents, playing games and other. It is possible to make video call between 15 humans simultaniously.<br />
<br />
=== MozPlugger ===<br />
<br />
MozPlugger can be installed with the {{AUR|mozplugger}} package.<br />
<br />
[http://mozplugger.mozdev.org/ MozPlugger] is a Mozilla plugin which can show many types of multimedia inside your browser. To accomplish this, it uses external programs such as MPlayer, xine, Evince, OpenOffice, TiMidity, etc. To modify or add applications to be used by MozPlugger just modify the {{ic|/etc/mozpluggerrc}} file.<br />
<br />
For example, MozPlugger uses OpenOffice by default to open {{ic|doc}} files. To change it to use LibreOffice instead, look for the OpenOffice section:<br />
{{hc|/etc/mozpluggerrc|<br />
...<br />
### OpenOffice<br />
define([OO],[swallow(VCLSalFrame) fill: ooffice2.0 -nologo -norestore -view $1 "$file"<br />
swallow(VCLSalFrame) fill: ooffice -nologo -norestore -view $1 "$file"<br />
swallow(VCLSalFrame) fill: soffice -nologo $1 "$file"])<br />
...<br />
}}<br />
and add LibreOffice at the beginning of the list:<br />
{{hc|/etc/mozpluggerrc|<br />
...<br />
### LibreOffice/OpenOffice<br />
define([OO],[swallow(VCLSalFrame) fill: libreoffice --nologo --norestore --view $1 "$file"<br />
swallow(VCLSalFrame) fill: ooffice2.0 -nologo -norestore -view $1 "$file"<br />
swallow(VCLSalFrame) fill: ooffice -nologo -norestore -view $1 "$file"<br />
swallow(VCLSalFrame) fill: soffice -nologo $1 "$file"])<br />
...<br />
}}<br />
{{Note|Be sure to also choose LibreOffice as your preferred application to open {{ic|doc}} files.}}<br />
<br />
As another simple example, if you want to open {{ic|cpp}} files with your favorite text editor (we will use Kate) to get syntax highlighting, just add a new section to your {{ic|mozpluggerrc}} file:<br />
{{hc|/etc/mozpluggerrc|<br />
text/x-c++:cpp:C++ Source File<br />
text/x-c++:hpp:C++ Header File<br />
repeat noisy swallow(kate) fill: kate -b "$file"<br />
}}<br />
<br />
To change the default of MPlayer so that [[mpv]] is used instead, change the appropriate lines such that:<br />
{{hc|1=/etc/mozpluggerrc|2=<br />
...<br />
### MPlayer<br />
<br />
#define(MP_CMD,[mplayer -really-quiet -nojoystick -nofs -zoom -vo xv,x11 -ao esd,alsa,oss,arts,null -osdlevel 0 $1 </dev/null])<br />
define(MP_CMD,[mpv -really-quiet $1 </dev/null])<br />
<br />
#define(MP_EMBED,[embed noisy ignore_errors: MP_CMD(-xy $width -wid $window $1)])<br />
define(MP_EMBED,[embed noisy ignore_errors: MP_CMD(--autofit=$width -wid $window $1)])<br />
<br />
#define(MP_NOEMBED,[noembed noisy ignore_errors maxaspect swallow(MPlayer): MP_CMD($1)])<br />
define(MP_NOEMBED,[noembed noisy ignore_errors maxaspect swallow(mpv): MP_CMD($1)])<br />
<br />
...<br />
<br />
#define(MP_AUDIO,[mplayer -quiet -nojoystick $1 </dev/null])<br />
define(MP_AUDIO,[mpv -really-quiet $1 </dev/null])<br />
<br />
#define(MP_AUDIO_STREAM,[controls stream noisy ignore_errors: mplayer -quiet -nojoystick $1 "$file" </dev/null])<br />
define(MP_AUDIO_STREAM,[controls stream noisy ignore_errors: mpv -really-quiet $1 "$file" </dev/null])<br />
...<br />
}}<br />
<br />
For a more complete list of MozPlugger options see [http://www.linuxmanpages.com/man7/mozplugger.7.php this page].<br />
<br />
=== kpartsplugin ===<br />
<br />
[http://www.unix-ag.uni-kl.de/~fischer/kpartsplugin/ The KParts plugin] is a plugin that uses KDE's KPart technology to embed different file viewers in the browser, such as Okular (for PDF), Ark (for different archives), Calligra Words (for ODF), etc. It cannot use applications that are not based on the KPart technology.<br />
<br />
The KParts plugin can be installed with the package {{Pkg|kpartsplugin}}, available in the official repositories.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Flash Player: no sound ===<br />
<br />
Flash Player outputs its sound only through the default [[Advanced Linux Sound Architecture|ALSA]] device, which is number '''0'''. If you have multiple sound devices (a very common example is having a sound card and HDMI output in the video card), then your preferred device may have a different number.<br />
<br />
For a list of available devices with their respective numbers, run:<br />
{{hc|$ aplay -l|<br />
**** List of PLAYBACK Hardware Devices ****<br />
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]<br />
Subdevices: 1/1<br />
Subdevice #0: subdevice #0<br />
card 1: DX [Xonar DX], device 0: Multichannel [Multichannel]<br />
Subdevices: 0/1<br />
Subdevice #0: subdevice #0<br />
card 1: DX [Xonar DX], device 1: Digital [Digital]<br />
Subdevices: 1/1<br />
Subdevice #0: subdevice #0<br />
}}<br />
In this case, the HDMI output is {{ic|card 0}} and the sound card is {{ic|card 1}}. To make your sound card the default for ALSA, create the file {{ic|.asoundrc}} in your home directory, with the following content:<br />
{{hc|~/.asoundrc|<br />
pcm.!default {<br />
type hw<br />
card 1<br />
}<br />
<br />
ctl.!default {<br />
type hw<br />
card 1<br />
}<br />
}}<br />
<br />
=== Flash Player: blocking sound for other applications or delayed playback ===<br />
<br />
If sound is delayed within Flash videos or Flash stops sound from any other application, then make sure you do not have {{ic|snd_pcm_oss}} module loaded:<br />
$ lsmod | grep snd_pcm_oss<br />
You can unload it:<br />
# rmmod snd_pcm_oss<br />
and restart the browser to see if it helps.<br />
<br />
=== Flash Player: performance ===<br />
<br />
Adobe's Flash plugin has some serious performance issues, especially when CPU frequency scaling is used. There seems to be a policy not to use the whole CPU workload, so the frequency scaling governor does not clock the CPU any higher. To work around this issue, see [[CPU frequency scaling#Switching threshold]]<br />
<br />
=== Flash Player: low webcam resolution ===<br />
<br />
If your webcam has low resolution in Flash (the image looks very pixelated) you can try starting your browser with this:<br />
$ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so [broswer]<br />
<br />
=== Flash Player: black bars in full screen playback on multi-headed setups ===<br />
<br />
The Flash plugin has a known bug where the full screen mode does not really work when you have a multi-monitor setup. Apparently, it incorrectly determines the full screen resolution, so the full screen Flash Player fills the correct monitor but gets scaled as if the monitor had the resolution of the total display area.<br />
<br />
To fix this, you can use the "hack" described [http://al.robotfuzz.com/content/workaround-fullscreen-flash-linux-multiheaded-desktops here]. Simply download the source from the link given on the page, and follow the instructions in the README.<br />
<br />
{{Tip|The hack is available in the [[AUR]] and can be installed with the {{AUR|fullscreenhack}} package.}}<br />
<br />
{{Note|While the author mentions using NVDIA's TwinView, the hack should work for any multi-monitor setup.}}<br />
<br />
=== Flash Player: blue tint on videos with NVIDIA ===<br />
<br />
An issue with {{Pkg|flashplugin}} versions 11.2.202.228-1 and 11.2.202.233-1 causes it to send the U/V panes in the incorrect order resulting in a blue tint on certain videos. Version 0.5 of {{Pkg|libvdpau}} includes a workaround to fix this, see the [http://lists.x.org/archives/xorg-announce/2012-September/002066.html official announcement].<br />
<br />
=== Flash Player: leaking overlay with NVIDIA ===<br />
<br />
This bug is due to the incorrect color key being used by the {{Pkg|flashplugin}} version 11.2.202.228-1 (see [http://www.nvnews.net/vbulletin/showpost.php?p=2514210&postcount=102 this post] on the NVIDIA forums) and causes the Flash content to "leak" into other pages or solid black backgrounds. To avoid this issue simply export {{ic|1=VDPAU_NVIDIA_NO_OVERLAY=1}} within either your shell profile (e.g. {{ic|~/.bash_profile}} or {{ic|~/.zprofile}}) or {{ic|~/.xinitrc}}<br />
<br />
=== Flash Player: videos not working on older systems ===<br />
<br />
If you have Adobe Flash installed on an older system and you start playing a video which simply turns black with nothing happening, it is most likely that your CPU does not support SSE2. You can simply check this by looking at your CPU flags with this command:<br />
$ grep sse2 /proc/cpuinfo<br />
<br />
If no results are returned, then you need to install an older version of Flash (for example 10.3, or 11.1). Older versions possibly will have vulnerabilities. You should then consider sandboxing Firefox using {{AUR|sandfox}}, available in the [[AUR]]. See the [https://igurublog.wordpress.com/downloads/script-sandfox/ sandfox homepage] for usage information.<br />
<br />
Older versions of Flash are available here:<br />
https://www.adobe.com/products/flashplayer/distribution3.html<br />
You need to copy {{ic|libflashplayer.so}} to the folder {{ic|/usr/lib/mozilla/plugins/}}<br />
<br />
Older {{Pkg|flashplugin}} packages can be downloaded from the [[AUR]] e.g. {{AUR|flashplugin-10}}.<br />
<br />
The most recent package without SSE2 is {{ic|flashplugin-11.1.102.63-1-i686.pkg.tar.xz}}. If you use the packaged version, you have to add {{ic|IgnorePkg &#61; flashplugin}} to {{ic|/etc/pacman.conf}}.<br />
<br />
=== Plugins are installed but not working ===<br />
<br />
A common problem is that the plugin path is unset. This typically occurs on a new install, when the user has not re-logged in before running Firefox after the installation. Test if the path is unset:<br />
echo $MOZ_PLUGIN_PATH<br />
If unset, then either re-login, or source {{ic|/etc/profile.d/mozilla-common.sh}} and start Firefox from the same shell:<br />
source /etc/profile.d/mozilla-common.sh && firefox<br />
<br />
=== Gecko Media Player will not play Apple trailers ===<br />
<br />
If Apple Trailers appear to start to play and then fail, try setting the user agent for your browser to:<br />
QuickTime/7.6.2 (qtver=7.6.2;os=Windows NT 5.1Service Pack 3)</div>S techttps://wiki.archlinux.org/index.php?title=VirtualBox&diff=313858VirtualBox2014-05-07T18:22:57Z<p>S tec: /* Windows 8 VM fails to boot with error "ERR_DISK_FULL" */</p>
<hr />
<div>[[Category:Emulators]]<br />
[[Category:Virtualization]]<br />
[[cs:VirtualBox]]<br />
[[de:VirtualBox]]<br />
[[el:VirtualBox]]<br />
[[es:VirtualBox]]<br />
[[fr:VirtualBox]]<br />
[[hu:VirtualBox]]<br />
[[it:VirtualBox]]<br />
[[ja:VirtualBox]]<br />
[[pt:VirtualBox]]<br />
[[ru:VirtualBox]]<br />
[[zh-CN:VirtualBox]]<br />
{{Related articles start}}<br />
{{Related|PhpVirtualBox}}<br />
{{Related|VirtualBox Arch Linux Guest On Physical Drive}}<br />
{{Related|Installing Arch Linux from VirtualBox}}<br />
{{Related|Moving an existing install into (or out of) a virtual machine}}<br />
{{Related articles end}}<br />
<br />
[https://www.virtualbox.org VirtualBox] is a [[Wikipedia:Hypervisor|hypervisor]] used to run operating systems in a special environment, called a virtual machine, on top of the existing operating system. VirtualBox is in constant development and new features are implemented continuously. It comes with a [[Qt]] GUI interface, as well as headless and [[Wikipedia:SDL|SDL]] command-line tools for managing and running virtual machines.<br />
<br />
In order to integrate functions of the host system to the guests, including shared folders and clipboard, video acceleration and a seamless window integration mode, ''guest additions'' are provided for some guest operating systems.<br />
<br />
{{Wikipedia|VirtualBox}}<br />
<br />
== Installation steps for Arch Linux hosts ==<br />
<br />
In order to launch VirtualBox virtual machines on your Arch Linux box, follow these installation steps.<br />
<br />
=== Install the core packages ===<br />
<br />
First, from the [[official repositories]], install the {{Pkg|virtualbox}} package which contains the GPL-licensed VirtualBox suite with the SDL and headless command-line tools included. The {{Pkg|virtualbox}} package comes with {{Pkg|virtualbox-host-modules}} as a required dependency. <br />
<br />
You can install the {{Pkg|qt4}} optional dependency in order to use the graphical interface which is based on [[Qt]]. This is not required if you intend to use VirtualBox in command-line only. [[#Use the right front-end|See below to learn the differences]].<br />
<br />
=== Install the VirtualBox kernel modules ===<br />
<br />
Next, in order for VirtualBox to virtualize your guest installation, you will need to add [[kernel modules]] to your host kernel.<br />
<br />
As you have to know, the binary compatibility of kernel modules depends on the API of the kernel against which they have been compiled. The problem with the Linux kernel is that these interfaces might not be the same from one kernel version to another. In order to avoid compatibility problems and subtle bugs, each time the Linux kernel is upgraded, it is advised to recompile the kernel modules against the Linux kernel version that has just been installed. This is what Arch Linux packagers actually do with the VirtualBox kernel modules packages: each time a new Arch Linux kernel is released, the Virtualbox modules are upgraded accordingly.<br />
<br />
Therefore, if you are using a kernel from the [[official repositories]] or a custom one (self-compiled or installed from the [[AUR]]), the kernel module package you will need to install will thus vary.<br />
<br />
==== Hosts running an official kernel ====<br />
<br />
* If you are using the {{Pkg|linux}} kernel, make sure the {{pkg|virtualbox-host-modules}} package is still installed. The latter has been installed when you installed the {{Pkg|virtualbox}} package.<br />
* If you are using the LTS version of the kernel ({{pkg|linux-lts}}), you need to install the {{pkg|virtualbox-host-modules-lts}} package. {{Pkg|virtualbox-host-modules}} can now be removed if you want.<br />
<br />
==== Hosts running a custom kernel ====<br />
<br />
If you use or intend to use a self-compiled kernel from sources, you have to know that VirtualBox does not require any virtualization modules (e.g. virtuo, kvm,...). The VirtualBox kernel modules provide all the necessary for VirtualBox to work properly. You can thus disable in your kernel ''.config'' file these virtualization modules if you do not use other hypervisors like Xen, KVM or QEMU.<br />
<br />
The {{ic|virtualbox-host-modules}} package works fine with custom kernels of the same version of the Arch Linux stock kernel such as {{AUR|linux-ck}}. However, if you are using a custom kernel which is not of the same version of the Arch Linux stock one, you will have to install the {{Pkg|virtualbox-host-dkms}} package instead. The latter comes bundled with the source of the VirtualBox kernel modules that will be compiled to generate these modules for your kernel.<br />
<br />
Since the {{ic|virtualbox-host-modules}} comes with the official Arch Linux kernel ({{Pkg|linux}}) as a dependency, if you want to remove this default kernel you do not use, you will have to install {{Pkg|virtualbox-host-dkms}} as well. Then, you will be able to remove {{Pkg|virtualbox-host-modules}} then {{Pkg|linux}} (if no other packages require it).<br />
<br />
As the {{Pkg|virtualbox-host-dkms}} package requires compilation, make sure you have the kernel headers corresponding to your custom kernel version to prevent this error from happening {{ic|Your kernel headers for kernel ''your custom kernel version'' cannot be found at /usr/lib/modules/''your custom kernel version''/build or /usr/lib/modules/''your custom kernel version''/source}}.<br />
* If you use a self-compiled kernel and have used {{ic|make modules_install}} to install its modules, folders {{ic|/usr/lib/modules/''your custom kernel version''/build}} and {{ic|(...)/source}} will be symlinked to your kernel sources. These will act as the kernel headers you need. If you have not removed these kernel sources yet, you have nothing to do.<br />
* If you use a custom kernel from [[AUR]], make sure the package {{Pkg|linux-headers}} is installed.<br />
<br />
Once {{Pkg|virtualbox-host-dkms}} is installed, simply generate the kernel modules for your custom kernel by running the following command structure:<br />
# dkms install vboxhost/''virtualbox-host-source version'' -k ''your custom kernel version''/''your architecture''<br />
<br />
{{Tip|Use this all-in-one command instead, if you do not want to adapt the above command:<br />
{{bc|<nowiki># dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')</nowiki>}}<br />
}}<br />
<br />
To automatically recompile the VirtualBox kernel modules when their sources get upgraded (i.e. when the {{Pkg|virtualbox-host-dkms}} package gets upgraded) and avoid to type again the above {{ic|dkms install}} command manually afterwards, enable the {{ic|dkms}} service with:<br />
# systemctl enable dkms<br />
<br />
{{Note|If you do not have the {{ic|dkms}} service enabled while the {{Pkg|virtualbox-host-dkms}} package is being updated, the VirtualBox modules will not be updated and you will have to type in manually the {{ic|dkms install}} command described above to compile the latest version of the Virtualbox kernel modules. If you do not want to type in manually this command, if the {{ic|dkms}} service is automatically loaded at startup, you just need to reboot and your VirtualBox modules will be recompiled silently.}}<br />
<br />
If you want to keep that {{ic|dkms}} deamon disabled, you can use an [[mkinitcpio|initramfs hook]] that will automatically trigger the {{ic|dkms install}} command described above at boot time. This requires to reboot to recompile the VirtualBox modules.<br />
To enable this hook, install the {{AUR|vboxhost-hook}} package from the [[Arch User Repository|AUR]] and add {{ic|vboxhost}} to your HOOKS array in {{ic|/etc/mkinitcpio.conf}}. Again, make sure the right linux headers are available for the new kernel otherwise the compilation will fail.<br />
<br />
{{Tip|Like the {{ic|dkms}} command, the {{ic|vboxhost}} hook will tell you if anything goes wrong during the recompilation of the VirtualBox modules.}}<br />
<br />
=== Load the VirtualBox kernel modules ===<br />
<br />
Among the [[kernel modules]] VirtualBox uses, there is a mandatory module named {{ic|vboxdrv}}, which must be loaded before any virtual machines can run. It can be automatically loaded when Arch Linux starts up, or it can be loaded manually when necessary.<br />
<br />
To load the module manually:<br />
# modprobe vboxdrv<br />
<br />
{{Note|In order to avoid {{ic|no such file or directory}} errors when using ''modprobe'', you may need to update the kernel dependency modules database ''modprobe'' is using with {{ic|depmod -a}}.}}<br />
<br />
To load the VirtualBox module at boot time, refer to [[Kernel_modules#Loading]] and create a {{ic|*.conf}} file (e.g. {{ic|virtualbox.conf}}) in {{ic|/etc/modules-load.d/}} with the line:<br />
{{hc|/etc/modules-load.d/virtualbox.conf|<br />
vboxdrv}}<br />
<br />
To ensure full functionality of bridged networking, ensure that the {{ic|vboxnetadp}}, {{ic|vboxnetflt}} and {{ic|vboxpci}} [[Kernel modules|kernel modules]] are loaded as well and that the {{pkg|net-tools}} package is installed.<br />
<br />
{{Note|If the VirtualBox kernel modules were loaded in the kernel while you updated the modules, you need to reload them manually to use the new updated version.}}<br />
<br />
=== Add usernames to the vboxusers group ===<br />
<br />
To use the USB ports of your host machine in your virtual machines, add to the {{ic|vboxusers}} [[group]] the usernames that will be authorized to use this feature. The new group does not automatically apply to existing sessions; the user has to log out and log in again, or start a new environment with the {{ic|newgrp}} command or with {{ic|sudo -u $USER -s}}. To add the current user to the {{ic|vboxusers}} group, type:<br />
# gpasswd -a $USER vboxusers<br />
<br />
=== Guest additions disc ===<br />
<br />
It is also recommended to install the {{Pkg|virtualbox-guest-iso}} package on the host running VirtualBox. This package will act as a disc image that can be used to install the guest additions onto guest systems other than Arch Linux.<br />
<br />
=== Use the right front-end ===<br />
<br />
Now, you are ready to use VirtualBox. Congratulations!<br />
<br />
Multiple front-ends are available to you which two are available by default:<br />
* If you want to use VirtualBox in command-line only (only launch and change settings of existing virtual machines), you can use the {{ic|VBoxSDL}} command. VBoxSDL does only provide a simple window that contains only the ''pure'' virtual machine, without menus or other controls.<br />
* If you want to use VirtualBox in command-line without any GUI running (e.g. on a server) to create, launch and configure virtual machines, use the {{ic|VBoxHeadless}} which produces no visible output on the host at all, but instead only delivers VRDP data.<br />
<br />
If you installed the {{Pkg|qt4}} optional dependency, you also have a nice looking GUI interface with menus which is usable with the mouse.<br />
<br />
Finally, you can use [[PhpVirtualBox]] to administrate your virtual machines via a web interface.<br />
<br />
Refer to the [https://www.virtualbox.org/manual VirtualBox manual] to learn how to create virtual machines.<br />
<br />
{{Warning|If you store the virtual disk images on a [[Btrfs]] file system, you should consider disabling [[Btrfs#Copy-On-Write_.28CoW.29|Copy-on-Write]] for the directory before creating any images.}}<br />
<br />
== Installation steps for Arch Linux guests ==<br />
<br />
=== Install Arch Linux inside the virtual machine ===<br />
<br />
Boot the Arch installation media through one of the virtual machine's virtual drives, then complete the installation of a basic Arch system as explained in the [[Beginners' guide]] or the [[Installation guide]].<br />
<br />
{{Note|You do not need to also install a specific video driver in the guest system. [[#Install the Guest Additions|Install the Guest Additions]] instead.}}<br />
<br />
=== Install the Guest Additions ===<br />
<br />
After completing the installation of the guest system you will need to install VirtualBox's [https://www.virtualbox.org/manual/ch04.html Guest Additions], which consist of device drivers and system applications that optimize the guest operating system for better performance and usability.<br />
<br />
On other GNU/Linux distributions, the Guest Additions can be installed in two different ways:<br />
* either via the regular installation process described in the Virtualbox manual (on the host, clicking "Install Guest Additions" from the Virtualbox menu, then on the guest, mounting the cdrom manually in {{ic|/mnt}}, then execute {{ic|/mnt/VBoxLinuxAdditions.run}});<br />
* or via a simple package you can install from the official repositories of the distribution.<br />
<br />
On Arch Linux guests, the first method does not work, you will get {{ic|Unable to determine your Linux distribution}} as an error message. Therefore you have to use the second way and install {{Pkg|virtualbox-guest-utils}}, which provides {{Pkg|virtualbox-guest-modules}} as a required dependency.<br />
<br />
=== Install the VirtualBox guest kernel modules ===<br />
<br />
==== Guests running an official kernel ====<br />
<br />
* If you are using the {{Pkg|linux}} kernel, make sure the {{pkg|virtualbox-guest-modules}} package is still installed. The latter has been installed when you installed the {{Pkg|virtualbox-guest-utils}} package.<br />
* If you are using the LTS version of the kernel ({{pkg|linux-lts}}), you need to install the {{pkg|virtualbox-guest-modules-lts}} package. {{Pkg|virtualbox-guest-modules}} can now be removed if you want.<br />
<br />
==== Guests running a custom kernel ====<br />
<br />
As this installation step is quite similar to the Vitualbox kernel modules section for the host described above, please refer to [[#Install the VirtualBox kernel modules|that section]] for more information and replace all {{Pkg|virtualbox-guest-modules}}, {{Pkg|virtualbox-host-dkms}} and {{AUR|vboxhost-hook}} by {{Pkg|virtualbox-guest-modules}}, {{Pkg|virtualbox-guest-dkms}} and {{AUR|vboxguest-hook}} respectively.<br />
<br />
=== Load the Virtualbox kernel modules ===<br />
<br />
To load the modules manually, type:<br />
# modprobe -a vboxguest vboxsf vboxvideo<br />
<br />
To load the VirtualBox module at boot time, refer to [[Kernel_modules#Loading]] and create a {{ic|*.conf}} file (e.g. {{ic|virtualbox.conf}}) in {{ic|/etc/modules-load.d/}} with these lines:<br />
{{hc|/etc/modules-load.d/virtualbox.conf|<br />
vboxguest<br />
vboxsf<br />
vboxvideo}}<br />
<br />
=== Launch the VirtualBox guest services ===<br />
<br />
After the rather big installation step dealing with VirtualBox kernel modules, now you need to start the guest services. The guest services are actually just a binary executable called {{ic|VBoxClient}} which will interact with your X Window System. {{ic|VBoxClient}} manages the following features:<br />
* the shared clipboard and the drag and drop between the host and the guest;<br />
* the seamless window mode;<br />
* the fact that the guest display is automatically resized according to the size of the guest window;<br />
* and finally checking the VirtualBox host version.<br />
<br />
All these features can be enabled indepently and manually with their dedicated flags.<br />
# VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion<br />
<br />
But VirtualBox provides a currently undocumented feature, a Bash script {{ic|VBoxClient-all}} which enables all these features automatically and checks if a X11 server is really running before enabling some of them.<br />
# VBoxClient-all<br />
<br />
To start that script automatically when system starts run the following command as root (or sudo):<br />
# systemctl enable vboxservice<br />
<br />
If you don't want to use systemd: (If you are unsure, use the method above):<br />
* if you are using a [[desktop environment]], you just need enable a checkbox or add the {{ic|/usr/sbin/VBoxClient-all}} to the autostart section in your DE settings (the DE will typically set a flag to a ''.desktop'' file in {{ic|~/.config/autostart}} - [[Autostart#Desktop_Application_Autostart|see the Autostart section for more details]] -);<br />
* if you do not have any [[desktop environment]], add the following line to the top of {{ic|~/.xinitrc}} (copy the file from {{ic|/etc/skel/.xinitrc}} if it does not exist) above any {{ic|exec}} options:<br />
{{hc|~/.xinitrc|<br />
/usr/bin/VBoxClient-all}}<br />
<br />
Now, you should have a working ArchLinux guest. Congratulations!<br />
<br />
== Export VirtualBox virtual machines to other hypervisors ==<br />
<br />
If you plan to use your virtual machine, created with VirtualBox, on another computer which has not necessarily VirtualBox installed, you might be interested in following the next steps.<br />
<br />
=== Remove additions ===<br />
<br />
If you have installed the VirtualBox additions to your VirtualBox virtual machine, please uninstall them first. Your guest, especially if it is using an OS from the Windows family, might behave weirdly, crash or even might not boot at all if you are still using the specific VirtualBox drivers in another hypervisor.<br />
<br />
{{Tip|If you intend to use a virtualization solution from Parallels Inc for your Mac, the product ''Parallels Transporter'' can be used to create a virtual machine from a Windows or GNU/Linux virtual machine (or even from a native installation). With such a product, you do not need to apply follow the next step and can stop reading here.}}<br />
<br />
=== Use the right virtual disk format ===<br />
<br />
==== Supported formats by VirtualBox ====<br />
<br />
VirtualBox comes with its own container for the virtual hard drives: the Virtual Disk Image (VDI) file format. Even if this format is used by default when you create a virtual machine with VirtualBox, you can specify another one. Indeed VirtualBox does flawlessly support other formats:<br />
<br />
* VMDK: this format has been initially developed by VMware for their products, but it is now an open format. If you intend to use any VMware product, you will need to use this format since it is the only one supported by VMware.<br />
<br />
* VHD: this is the format used by Microsoft in Windows Virtual PC and Hyper-V. If you intend to use any of these Microsoft products, you will have to choose this format.<br />
:{{Tip|Since Windows 7, this format can be mounted directly without any additional application.}} <br />
<br />
* Version 2 of the HDD format used by Parallels (Desktop for Mac).<br />
<br />
* QED and QCOW used by QEMU.<br />
<br />
The format you will need to choose depends on the hypervisor that will be used.<br />
<br />
==== Specific virtual disk format differences ====<br />
<br />
Before converting your virtual drive, please keep in mind these specific virtual disk format differences:<br />
<br />
* The VMDK does offer the ability to be split into several files of up to 2GB. This feature is specially useful if you want to store the virtual machine on machines which do not support very large files. Other formats do not provide such an equivalent feature.<br />
<br />
* Changing the logical capacity of an existing virtual drive with VirtualBox {{ic|VBoxManage}} command is only supported for VDI and VHD formats used in dynamic allocation mode to expand (not shrink) their capacity.<br />
<br />
==== Convert your virtual disk format ====<br />
<br />
VirtualBox only supports the virtual disk conversion between VDI, VMDK and VHD formats. Here is an example of conversion from a VDI to VMDK vitual drive.<br />
<br />
$ VBoxManage clonehd ''ArchLinux_VM.vdi'' ''ArchLinux_VM.vmdk'' --format ''VMDK''<br />
<br />
If you want to replace the virtual disk you defined during the virtual machine creation process by the one you have just converted, use the {{ic|[http://www.virtualbox.org/manual/ch08.html#vboxmanage-storagectl VBoxManage storagectl] command}}, or the GUI, or [[#Replace_the_virtual_disk_manually_from_the_.vbox_file|modify the ''.vbox'' configuration file]].<br />
<br />
=== Create the VM configuration for your hypervisor ===<br />
<br />
If your hypervisor (like VMware) does not support import of VirtualBox configuration files (''.vbox''), you will have to create a new virtual machine and specify its hardware configuration as close as possible as your initial VirtualBox virtual machine.<br />
<br />
{{Note|Pay a close attention to the installation mode (BIOS or UEFI) used to install the guest operating system. While an option is available on VirtualBox to choose between these 2 modes, on VMware, you will have to add the following line to your ''.vmx'' file.<br />
<br />
{{hc|ArchLinux_vm.vmx|2=<br />
firmware = "efi"<br />
}}<br />
}}<br />
<br />
Finally, ask your hypervisor to use the existing virtual disk you have converted and launch the virtual machine.<br />
{{Tip|If you are using VMware products and do not want to run through the whole GUI to find the right location to add your new virtual drive device, you can replace the location of the current ''.vmdk'' file by editing your ''.vmx'' configuration file manually.}}<br />
<br />
== Virtual disks management ==<br />
<br />
=== Replace a virtual disk manually from the ''.vbox'' file ===<br />
<br />
If you think that editing a simple ''XML'' file is more convenient than playing with the GUI or with {{ic|VBoxManage}} and you want to replace (or add) a virtual disk to your virtual machine, simply replace in the ''.vbox'' configuration file corresponding to your virtual machine the GUID, the file location and the format to your needs:<br />
<br />
{{hc|ArchLinux_vm.vbox|2=<br />
<HardDisk uuid="''{670157e5-8bd4-4f7b-8b96-9ee412a712b5}''" location="''ArchLinux_vm.vdi''" format="''VDI''" type="Normal"/><br />
}}<br />
<br />
then in the {{ic|<AttachedDevice>}} sub-tag of {{ic|<StorageController>}}, replace the GUID by the new one.<br />
<br />
{{hc|ArchLinux_vm.vbox|2=<br />
<AttachedDevice type="HardDisk" port="0" device="0"><br />
<Image uuid="''{670157e5-8bd4-4f7b-8b96-9ee412a712b5}''"/><br />
</AttachedDevice><br />
}}<br />
<br />
{{Note|If you do not know the GUID of the drive you want to add, but you have just used {{ic|VBoxManage}} for the conversion, this command will output the GUID just after the conversion. Using a random GUID does not work, as each [http://www.virtualbox.org/manual/ch05.html#cloningvdis UUID is stored inside each disk images].}}<br />
<br />
=== Cloning a virtual disk and assigning a new UUID to it ===<br />
<br />
UUIDs are widely used by VirtualBox. Each virtual machines and each virtual disk of a virtual machine must have a different UUID. When you launch a virtual machine in VirtualBox, the latter will keep track of all UUID of your virtual machine instance. See the [http://www.virtualbox.org/manual/ch08.html#vboxmanage-list {{ic|VBoxManage list}}] to list the items registered with VirtualBox.<br />
<br />
If you cloned a virtual disk manually by copying the virtual disk file, you will need to assign a new UUID to the cloned virtual drive if you want to use the disk in the same virtual machine or even in another (if that one has already been opened, and thus registered, with VirtualBox).<br />
<br />
You can use this command to assign a new UUID to your virtual disk: <br />
$ VBoxManage internalcommands sethduuid /path/to/disk.vdi<br />
<br />
{{Tip|In the future, to avoid copying the virtual disk and assigning a new UUID to your file manually, use {{ic|[http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi VBoxManage clonehd]}} instead.}}<br />
<br />
{{Note|The commands above supports [[#Supported_formats_by_VirtualBox|all virtual disk formats supported by VirtualBox]].}}<br />
<br />
=== Compacting or increasing virtual disks ===<br />
<br />
==== Compacting ====<br />
<br />
===== Compacting Linux disks =====<br />
<br />
Boot the Linux guest VM and remove all bloat (unwanted packages, temp files, etc.). When satisfied, wipe the freespace using dd or preferably dcfldd:<br />
<br />
$ dcfldd if=/dev/zero of=fillfile bs=4M<br />
<br />
When the fillfile hits the limit of the virtual hdd, the vast majority of user-space (non-reserved blocks) will be filled. Alternatively, run the command as root to get all of them. Example message: "8192 blocks (8192Mb) written.dcfldd:: No space left on device."<br />
<br />
Once this occurs, simply remove the fill file and powerdown the VM:<br />
<br />
$ rm -f fillfile && sudo shutdown -hF now<br />
<br />
{{Note| The -F switch will force a disk check upon a reboot which is advised following the compact operation.}}<br />
<br />
Now compact the disk:<br />
<br />
$ VBoxManage modifyhd /path/to/your.vdi --compact<br />
<br />
===== Compacting Windows disks =====<br />
<br />
See [http://www.mdl4.com/2010/04/virtualbox-compact-a-vdi-in-ubuntu this article].<br />
<br />
==== Increasing ====<br />
<br />
===== Increasing Windows disks =====<br />
<br />
{{Warning|This has only been tested with Windows XP and Windows 7 guests.}}<br />
<br />
If you find that you are running out of space due to the small hard drive size you selected when created your VM, you can take the following steps:<br />
<br />
Create a new vdi in ~/.VirtualBox/HardDisks by running:<br />
# cd ~/.VirtualBox/HardDisks<br />
# VBoxManage createhd -filename new.vdi --size 10000<br />
<br />
where size is in mb, in this example 10000MB ~= 10GB, and new.vdi is name of new hard drive to be created.<br />
<br />
Next the old vdi needs to be cloned to the new vdi, this may take some time so wait while it occurs:<br />
# VBoxManage clonehd old.vdi new.vdi --existing<br />
<br />
Detach old harddrive and attach new hard drive, replace VMName with whatever you called your VM:<br />
# VBoxManage modifyvm VMName --hda none<br />
# VBoxManage modifyvm VMName --hda new.vdi<br />
<br />
Boot the VM, run Partition Wizard 5 to resize the partition on the fly, and reboot.<br />
<br />
Remove old vdi from VirtualBox and delete<br />
# VBoxManage closemedium disk old.vdi<br />
# rm old.vdi<br />
<br />
==== Disk image format conversion ====<br />
<br />
The {{ic|qemu-img}} program can be used to convert images from one format to another or to add compression or encryption to an image. {{ic|qemu-img}} is provided by the {{Pkg|qemu}} package.<br />
<br />
===== QEMU to VDI =====<br />
<br />
From [[QEMU]] 0.12.x on, {{ic|qemu-img}} is able to convert directly to VDI and back, if necessary:<br />
$ qemu-img convert -O vdi test.qcow2 test.vdi<br />
<br />
===== VMDK to VDI =====<br />
<br />
You can <br />
$ VBoxManage clonehd source.vmdk target.vdi --format VDI<br />
although recent versions of VirtualBox are able to use (and also create) .vmdk images directly.<br />
<br />
=== Mounting virtual disks ===<br />
<br />
==== VDI ====<br />
<br />
Mounting vdi images only works with fixed size (''static'') images; ''dynamic size'' images aren't easily mountable.<br />
<br />
First we need one information from your .vdi image:<br />
<br />
$ VBoxManage internalcommands dumphdinfo <your .vdi file location> | grep offData<br />
Header: offBlocks=4096 offData=69632<br />
<br />
Then, add to your {{ic|offData}} 32256. (e.g. 32256 + 69632 = 101888)<br />
<br />
Now you can mount your vdi image with the following command:<br />
<br />
# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 <your .vdi file location> /mnt/<br />
<br />
You can also use [https://github.com/pld-linux/VirtualBox/blob/master/mount.vdi mount.vdi] script that, which you can use as (install script itself to /sbin):<br />
<br />
# mount -t vdi -o fstype=ext4,rw,noatime,noexec <your .vdi file location> /mnt/<br />
<br />
== Advanced configuration ==<br />
<br />
=== Virtual machine launch management ===<br />
<br />
==== Starting virtual machines with a service ====<br />
<br />
Find hereafter the implementation details of a systemd service that will be used to consider a virtual machine as a service.<br />
<br />
{{hc|/etc/systemd/system/vboxvmservice@.service|2=<br />
[Unit]<br />
Description=VBox Virtual Machine %i Service<br />
Requires=systemd-modules-load.service<br />
After=systemd-modules-load.service<br />
<br />
[Service]<br />
User=''username''<br />
Group=vboxusers<br />
ExecStart=/usr/bin/VBoxHeadless -s %i<br />
ExecStop=/usr/bin/VBoxManage controlvm %i savestate<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
}}<br />
<br />
{{Note|Replace {{ic|''username''}} with a user that is a member of the {{ic|vboxusers}} group. Make sure the user chosen is the same user that will create/import virtual machines, otherwise the user will not see the VM appliances.}}<br />
<br />
To enable the service that will launch the virtual machine at next boot, use:<br />
# systemctl enable vboxvmservice@'''your virtual machine name'''<br />
<br />
To start the service that will launch directly the virtual machine, use:<br />
# systemctl start vboxvmservice@'''your virtual machine name'''<br />
<br />
VirtualBox 4.2 introduces [http://lifeofageekadmin.com/how-to-set-your-virtualbox-vm-to-automatically-startup/ a new way] for UNIX-like systems to have virtual machines started automatically, other than using a systemd service.<br />
<br />
==== Starting virtual machines with a keyboard shortcut ====<br />
<br />
It can be useful to start virtual machines directly with a keyboard shortcut instead of using the VirtualBox interface (GUI or CLI). For that, you can simply define key bindings in {{ic|.xbindkeysrc}}. Please refer to [[Xbindkeys]] for more details.<br />
<br />
Example, using the {{ic|Fn}} key of a laptop with an unused battery key ({{ic|F3}} on the computer used in this example):<br />
"VBoxManage startvm 'Windows 7'"<br />
m:0x0 + c:244<br />
XF86Battery<br />
<br />
{{Note|If you have a space in the name of your virtual machine, then enclose it with single apostrophes like made in the example just above.}}<br />
<br />
=== Use specific device in the virtual machine ===<br />
<br />
==== Using USB webcam / microphone ====<br />
<br />
{{Note|You will need to have VirtualBox extension pack installed before following the steps below. See [[#Extension pack]] for details.}}<br />
<br />
# Make sure the virtual machine is not running and your webcam / microphone is not being used.<br />
# Bring up the main VirtualBox window and go to settings for Arch machine. Go to USB section.<br />
# Make sure "Enable USB Controller" is selected. Also make sure that "Enable USB 2.0 (EHCI) Controller" is selected too.<br />
# Click the "Add filter from device" button (the cable with the '+' icon).<br />
# Select your USB webcam/microphone device from the list.<br />
# Now click OK and start your VM.<br />
<br />
==== Detecting web-cams and other USB devices ====<br />
<br />
Make sure you filter any devices that are not a keyboard or a mouse so they do not start up at boot and this insures that Windows will detect the device at start-up.<br />
<br />
==== Old Nokia phones ====<br />
<br />
{{Out of date|This section might be out of date since Linux has deprecated and removed usbfs since version 3.5.}}<br />
<br />
To get working Nokia phones with Nokia PC Suite mode inside your Windows virtual machine, follow these two simple steps:<br />
<br />
'''1.''' Add a rule to [[udev]] with {{ic|/etc/udev/rules.d/40-permissions.rules}}:<br />
LABEL="usb_serial_start"<br />
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", \<br />
GROUP="usbfs", MODE="0660", GROUP="dialout"<br />
LABEL="usb_serial_end"<br />
<br />
'''2.''' Create the group {{ic|usbfs}} and add its user to it<br />
# groupadd usbfs<br />
# usermod -a -G usbfs $USER<br />
<br />
After logging out, connect a Nokia phone with PC Suite mode and start your Windows virtual machine to test the new rule.<br />
<br />
=== Using Arch under Virtualbox EFI mode ===<br />
{{note|EFI mode can be enabled in the "Extended Features" section of the system settings.}}<br />
<br />
Booting off of the installation media with EFI can be very slow. Do not despair if you get a blank screen for several minutes.<br />
<br />
EFI boot entries can be added/modified using {{ic|efibootmgr}} or VirtualBox's boot menu. Your changes will persist after a reboot, but [https://www.virtualbox.org/ticket/11177 not after VM shutdown]. As a workaround, you can create {{ic|startup.nsh}} in the ESP, which VirtualBox automatically runs on startup. For example,<br />
<br />
{{hc|\startup.nsh|<br />
FS0:\EFI\refind\refindx64.efi}}<br />
<br />
{{note|Type {{ic|map}} in the EFI shell to find the right device handle for your ESP.}}<br />
<br />
Alternatively, move your loader to {{ic|\EFI\boot\bootx64.efi}}.<br />
<br />
If using [[GRUB]], you may need to regenerate {{ic|grub.cfg}} to fix broken UUIDs. Check with the {{ic|lsblk -f}} command that they match.<br />
<br />
=== Synchronize guest date with host ===<br />
<br />
To keep the date and time synchronized, make sure you have {{Pkg|virtualbox-guest-utils}} installed in your host (see [[#Install the Guest Additions|above]]). To enable the service for subsequent boots, run<br />
# systemctl enable vboxservice<br />
<br />
To start immediately, run<br />
# systemctl start vboxservice<br />
<br />
You also need run this daemon in order to use the auto-mounting feature of shared folders that are mentioned above.<br />
<br />
=== Enable shared folders ===<br />
<br />
Shared folders are managed via the VirtualBox program on the host. They may be added, auto-mounted and made read-only from there.<br />
<br />
If automounting is enabled, and the {{ic|vboxservice}} is enabled, creating a shared folder from the VirtualBox program on the host will mount that folder in {{ic|/media/sf_''SHAREDFOLDERNAME''}} on the guest. To have that folder created on the Arch Guest, after the Guest Additions have been installed, you need to add your username to the {{ic|vboxsf}} group.<br />
<br />
# groupadd vboxsf<br />
# gpasswd -a $USER vboxsf<br />
<br />
{{Note|For '''automounting''' to work, you have to enable the '''vboxservice''' service.}}<br />
<br />
If you want a shared folder (e.g {{ic|/media/sf_Dropbox}}) to be symlinked to another folder in your home directory for easy access, you can type on the guest:<br />
<br />
$ ln -s /media/sf_Dropbox/* ~/dropbox<br />
<br />
The {{ic|VBoxLinuxAdditions.run}} script provided in the Guest Additions iso does this for you, however, Arch does not recommend using it.<br />
<br />
==== Manually mounting ====<br />
<br />
Look at the following for more info: [http://virtuatopia.com/index.php/VirtualBox_Shared_Folders]<br />
<br />
Syntax:<br />
mount -t vboxsf <shared-folder-name> <mount-point-on-guest-system><br />
<br />
If you get an error like:<br />
/sbin/mount.vboxsf: mounting failed with the error: No such device<br />
<br />
Try:<br />
modprobe vboxsf<br />
<br />
For additional info, see [https://bbs.archlinux.org/viewtopic.php?id=70780 this post].<br />
<br />
<br />
To prevent startup problems when you're using [[systemd]], you should add {{ic|1=comment=systemd.automount}} to your {{ic|/etc/fstab}}. This way, they are mounted only when you access those mount points and not during startup. Otherwise your system might become unusable after a kernel upgrade (if you install your guest additions manually).<br />
<br />
desktop /media/desktop vboxsf uid=user,gid=group,rw,dmode=700,fmode=600,comment=systemd.automount 0 0<br />
<br />
Don't waste your time to test the {{ic|nofail}} option. {{ic|mount.vboxsf}} is not able to handle this (2012-08-20).<br />
<br />
desktop /media/desktop vboxsf uid=user,gid=group,rw,dmode=700,fmode=600,nofail 0 0<br />
<br />
=== Extension pack ===<br />
<br />
VirtualBox requires an extension pack in order to provide support for RDP, as well as USB 2.0 and PXE booting for Intel network cards, etc., available at this webpage: [https://www.virtualbox.org/wiki/Downloads VirtualBox Downloads]. This PUEL licensed extension pack is free for personal use.<br />
<br />
To install the Extension pack you download and save it to your hard drive and then open the VirtualBox main program. Click on preferences and on the left side click Extensions. On the right side, click the add package icon and then open the folder that has the extension and click to install it.<br />
<br />
Additionally you can install the Extension Pack from the command line using VBoxManage.<br />
<br />
VBoxManage extpack install <tarball> |<br />
uninstall [--force] <name> |<br />
cleanup<br />
As an alternative, you could also use {{AUR|virtualbox-ext-oracle}} from the [[AUR]].<br />
<br />
=== Accessing a guest server ===<br />
<br />
To access [[Wikipedia:Apache_HTTP_Server|Apache server]] on a Virtual Machine from the host machine '''only''', simply execute the following lines on the host:<br />
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/HostPort" 8888<br />
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/GuestPort" 80<br />
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/pcnet/0/LUN#0/Config/Apache/Protocol" TCP<br />
Where 8888 is the port the host should listen on and 80 is the port the VM will send Apache's signal on.<br />
<br />
To use a port lower than 1024 on the host machine, changes need to be made to the firewall on that host machine. This can also be set up to work with SSH or any other services by changing "Apache" to the corresponding service and ports. <br />
<br />
{{note|{{ic|pcnet}} refers to the network card of the VM. If you use an Intel card in your VM settings, change {{ic|pcnet}} to {{ic|e1000}}.}}<br />
<br />
=== Sharing keyboard and mouse ===<br />
<br />
*To capture the keyboard and mouse, click the mouse inside the virtual machine display.<br />
*To uncapture, press right {{ic|Ctrl}}.<br />
<br />
To get seamless mouse integration between host and guest, install the [[#Guest Additions]] inside the guest.<br />
<br />
=== Sharing files ===<br />
<br />
In the settings of the virtual machine go to shared folders tab and add the folders you want to share.<br />
<br />
*NOTE: You need to install Guest Additions in order to use this feature.<br />
In a Linux host, ''Devices &rarr; Install Guest Additions''<br />
Yes (when asked to download the CD image)<br />
Mount (when asked to register and mount)<br />
<br />
In a Linux host, create one or more folders for sharing files, then set the shared folders via the virtualbox menu (guest window).<br />
<br />
In a Windows guest, starting with VirtualBox 1.5.0, shared folders are browseable and are therefore visible in Windows Explorer. Open Windows Explorer and look for it under ''My Networking Places &rarr; Entire Network &rarr; VirtualBox Shared Folders''.<br />
<br />
Launch the Windows Explorer (run explorer command) to browse the network places -> expand with the (+) sign : entire network &rarr; VirtualBox shared folders &rarr; '''\\Vboxsvr''' &rarr; then you can now expand all your configured shared folders here, and set up shortcuts for Linux folders in the guest filesystem. You can alternatively use the "Add network place wizard", and browse to "VBoxsvr".<br />
<br />
Alternatively, on the Windows command line, you can also use the following:<br />
net use x: \\VBOXSVR\sharename<br />
<br />
While {{ic|VBOXSVR}} is a fixed name, replace {{ic|x:}} with the drive letter that you want to use for the share, and sharename with the share name specified with VBoxManage.<br />
<br />
In a Windows guest, to improve loading and saving files (e.g. MS Office) by VirtualBox Shared Folders edit ''c:\windows\system32\drivers\etc\hosts'' as below:<br />
127.0.0.1 localhost vboxsvr<br />
<br />
In a Linux guest, use the following command:<br />
# mount -t vboxsf [-o OPTIONS] sharename mountpoint<br />
(Notes: sharename is optional or same as selected in the VirtualBox-Dialog , mountpoint of the shared directory in the hosts filesystem)<br />
:Automatically mounting a shared folder is possible through the linux-guest {{ic|/etc/fstab}} file. You may also specify the uid=#,gid=# (where # is replaced by the actual numerical uid and gid) to mount the share with normal user permissions instead of root permissions. (this can be helpful to mount parts of your host {{ic|~/home}} for use in your Linux-guest. To do this add an entry in the following format to the linux-guest {{ic|/etc/fstab}}:<br />
<br />
sharename mountpoint vboxsf uid=#,gid=# 0 0<br />
<br />
Replace {{ic|sharename}} with the share name specified with VBoxManage, and mountpoint with the path where you want the share to be mounted (e.g. /mnt/share). The usual mount rules apply, that is, create this directory first if it does not exist yet. Note that if you have told VirtualBox to "automatically mount" the shared folder, this step may not be necessary and your folder will be found somewhere under {{ic|/media}}.<br />
<br />
Beyond the standard options supplied by the mount command, the following are available:<br />
iocharset=CHARSET<br />
to set the character set used for I/O operations (utf8 by default) and<br />
convertcp=CHARSET<br />
to specify the character set used for the shared folder name (utf8 by default).<br />
<br />
=== D3D acceleration in Windows guests ===<br />
<br />
Recent versions of Virtualbox have support for accelerating OpenGL inside guests. This can be enabled with a simple checkbox in the machine's settings, right below where video ram is set, and installing the Virtualbox guest additions. However, most Windows games use Direct3D (part of DirectX), not OpenGL, and are thus not helped by this method. However, it is possible to gain accelerated Direct3D in your Windows guests by borrowing the d3d libraries from Wine, which translate d3d calls into OpenGL, which is then accelerated. These libraries are now part of Virtualbox guest additions software. <br />
<br />
After enabling OpenGL acceleration as described above, reboot the guest into safe mode (press F8 before the Windows screen appears but after the Virtualbox screen disappears), and install Virtualbox guest additions, during install enable checkbox "Direct3D support". Reboot back to normal mode and you should have accelerated Direct3D. <br />
<br />
{{Note | This hack may or may not work for some games depending on what hardware checks they make and what parts of D3D they use.}}<br />
{{Note | This was tested on Windows XP, 7 and 8.1. If method does not work on your Windows version please add data here.}}<br />
<br />
=== Sending CTRL+ALT+F1 ===<br />
If your guest operating system is a GNU/Linux distribution and you want to open a new TTY shell or exit X via typing {{ic|Ctrl}}+{{ic|Alt}}+{{ic|F1}}, you can easily send this command to the guest simply by hitting your ''Host Key'' (usually the right {{ic|Ctrl}} key + {{ic|F1}} or {{ic|F2}}, according to what you need to do.<br />
<br />
=== VirtualBox on a USB key ===<br />
When using VirtualBox on a USB key, for example to start an installed machine with an ISO image, you will manually have to create VDMKs from the existing drives. However, once the new VMDKs are saved and you move on to another machine, you may experience problems launching an appropriate machine again. To get rid of this issue, you can use the following script to launch VirtualBox. This script will clean up and unregister old VMDK files and it will create new, proper VMDKs for you:<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
<br />
# Erase old VMDK entries<br />
rm ~/.VirtualBox/*.vmdk<br />
<br />
# Clean up VBox-Registry<br />
sed -i '/sd/d' ~/.VirtualBox/VirtualBox.xml<br />
<br />
# Remove old harddisks from existing machines<br />
find ~/.VirtualBox/Machines -name \*.xml | while read file; do<br />
line=`grep -e "type\=\"HardDisk\"" -n $file | cut -d ':' -f 1`<br />
if [ -n "$line" ]; then<br />
sed -i ${line}d $file<br />
sed -i ${line}d $file<br />
sed -i ${line}d $file<br />
fi<br />
sed -i "/rg/d" $file<br />
done<br />
<br />
# Delete prev-files created by VirtualBox<br />
find ~/.VirtualBox/Machines -name \*-prev -exec rm '{}' \;<br />
<br />
# Recreate VMDKs<br />
ls -l /dev/disk/by-uuid | cut -d ' ' -f 9,11 | while read ln; do<br />
if [ -n "$ln" ]; then<br />
uuid=`echo "$ln" | cut -d ' ' -f 1`<br />
device=`echo "$ln" | cut -d ' ' -f 2 | cut -d '/' -f 3 | cut -b 1-3`<br />
<br />
# determine whether drive is mounted already<br />
checkstr1=`mount | grep $uuid`<br />
checkstr2=`mount | grep $device`<br />
checkstr3=`ls ~/.VirtualBox/*.vmdk | grep $device`<br />
if [[ -z "$checkstr1" && -z "$checkstr2" && -z "$checkstr3" ]]; then<br />
VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/$device.vmdk -rawdisk /dev/$device -register<br />
fi<br />
fi<br />
done<br />
<br />
# Start VirtualBox<br />
VirtualBox<br />
</nowiki>}}<br />
Note that your user has to be added to the "disk" group to create VMDKs out of existing drives.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Fix ISO images problems ===<br />
While VirtualBox can mount ISO images without problem, there are some image formats which cannot reliably be converted to ISO. For instance, ccd2iso ignores .ccd and .sub files, which can give disk images with broken files. <br />
<br />
In this case, you will either have to use [[CDEmu]] for Linux inside VirtualBox or any other utility used to mount disk images.<br />
<br />
=== VirtualBox GUI does not match my GTK Theme ===<br />
<br />
See [[Uniform Look for Qt and GTK Applications]] for information about theming Qt based applications like Virtualbox.<br />
<br />
=== OpenBSD unusable when virtualisation instructions unavailable ===<br />
<br />
While OpenBSD is reported to work fine on other hypervisors without virtualisation instructions (VT-x AMD-V) enabled, an OpenBSD virtual machine running on VirtualBox without these instructions will be unusable, manifesting with a bunch of segmentation faults. Starting VirtualBox with the ''-norawr0'' argument [https://www.virtualbox.org/ticket/3947 may solve the problem]. You can do it like this:<br />
$ VBoxSDL -norawr0 -vm NameOfYourOpenBSDVM<br />
<br />
=== VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) ===<br />
<br />
This can occur if a VM is exited ungracefully. The solution to unlock the VM is trivial:<br />
$ VBoxManage controlvm <your virtual machine name> poweroff<br />
<br />
=== USB subsystem is not working on the host or guest ===<br />
<br />
Sometimes, on old Linux hosts, the USB subsystem is not auto-detected resulting in an error {{ic|Could not load the Host USB Proxy service: VERR_NOT_FOUND}} or in a not visible USB drive on the host, [https://bbs.archlinux.org/viewtopic.php?id=121377 even when the user is in the '''vboxusers''' group]. This problem is due to the fact that VirtualBox switched from ''usbfs'' to ''sysfs'' in version 3.0.8. If the host doesn't understand this change, you can revert to the old behaviour by defining the following environment variable in any file that is sourced by your shell (e.g. your {{ic|~/.bashrc}} if you're using ''bash''):<br />
<br />
{{hc|~/.bashrc|VBOX_USB<nowiki>=</nowiki>usbfs}}<br />
<br />
Then make sure, the environment has been made aware of this change (reconnect, source the file manually, launch a new shell instance or reboot).<br />
<br />
Also make sure that your user is a member of the {{ic|storage}} group.<br />
<br />
=== Failed to create the host-only network interface ===<br />
<br />
To be able to create a ''Host-Only Network Adapter'' or a ''Bridged Network Adapter'', the kernel modules {{ic|vboxnetadp}} and {{ic|vboxnetflt}} need to be loaded, you also need to make sure the {{pkg|net-tools}} package is installed. You can load these kernel modules manually with:<br />
# modprobe -a vboxdrv vboxnetadp vboxnetflt<br />
<br />
To load these modules automatically at boot, refer to [[Kernel_modules#Loading]] and use a program name of {{ic|virtualbox}}.<br />
<br />
=== WinXP: Bit-depth cannot be greater than 16 ===<br />
<br />
If you are running at 16-bit color depth, then the icons may appear fuzzy/choppy. However, upon attempting to change the color depth to a higher level, the system may restrict you to a lower resolution or simply not enable you to change the depth at all. To fix this, run {{ic|regedit}} in Windows and add the following key to the Windows XP VM's registry:<br />
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]<br />
"ColorDepth"=dword:00000004<br />
<br />
Then update the color depth in the "desktop properties" window. If nothing happens, force the screen to redraw through some method (i.e. {{ic|Host+f}} to redraw/enter full screen).<br />
<br />
=== Use serial port in guest OS ===<br />
<br />
Check you permission for the serial port:<br />
$ /bin/ls -l /dev/ttyS*<br />
crw-rw---- 1 root uucp 4, 64 Feb 3 09:12 /dev/ttyS0<br />
crw-rw---- 1 root uucp 4, 65 Feb 3 09:12 /dev/ttyS1<br />
crw-rw---- 1 root uucp 4, 66 Feb 3 09:12 /dev/ttyS2<br />
crw-rw---- 1 root uucp 4, 67 Feb 3 09:12 /dev/ttyS3<br />
<br />
Add your user to the {{ic|uucp}} group.<br />
# gpasswd -a $USER uucp <br />
and log out and log in again.<br />
<br />
=== Windows 8.x Error Code 0x000000C4===<br />
<br />
If you get this error code while booting, even if you choose OS Type Win 8, try to enable the {{ic|CMPXCHG16B}} CPU instruction:<br />
<br />
$ vboxmanage setextradata <your virtual machine name> VBoxInternal/CPUM/CMPXCHG16B 1<br />
<br />
=== Windows 8 VM fails to boot with error "ERR_DISK_FULL" ===<br />
<br />
Situation: Your Windows 8 VM refuses to start. VirtualBox throws an error stating the virtual disk is full. However, you are certain that the disk is not full. <br />
Bring up your VM's settings at ''Settings > Storage > Controller:SATA'' and select "Use Host I/O Cache".<br />
<br />
=== Linux guests have slow/distorted audio ===<br />
<br />
The AC97 audio driver within the Linux kernel occasionally guesses the wrong clock settings when running inside Virtual Box, leading to audio that is either too slow or too fast. To fix this, create a file in {{ic|/etc/modprobe.d}} with the following line:<br />
<br />
options snd-intel8x0 ac97_clock=48000<br />
<br />
== External links ==<br />
<br />
* [https://www.virtualbox.org/manual/UserManual.html VirtualBox User Manual]</div>S techttps://wiki.archlinux.org/index.php?title=Intel_Quartus_Prime&diff=211028Intel Quartus Prime2012-06-23T20:23:10Z<p>S tec: Show how to create a quartus.desktop file</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
[[zh-CN:Altera Design Software]]<br />
This tutorial shows how to install the following softwares form the Altera ''Design Software''<br />
* Quartus II (''Web edition'' and ''Subscription Edition'')<br />
* USB-Blaster Driver<br />
<br />
== Quartus II ==<br />
The following procedure shows how to install the '''10.1 sp1''' version of Quartus II<br />
<br />
=== Installation ===<br />
Quartus II is downloadable at: https://www.altera.com/download/software/quartus-ii-se<br />
Downloading Altera softwares requires registration. Once this is done, proceed with the download. There are three files to get<br />
* Quartus II 10.1 base software<br />
* Quartus II devices<br />
* Quartus II 10.1 service pack 1<br />
Make sure you get the GNU/Linux version!<br />
<br />
Once you have downloaded the files, you can proceed with the installation<br />
<br />
$ cd <Download-folder><br />
$ sudo sh ./10.1_quartus_linux.sh<br />
<br />
Executing this script should open a setup GUI. Just follow the instructions. For the purpose of this tutorial, I assume that you are installing Quartus II in the {{ic|/opt/altera}} folder. <br />
<br />
After the base software is installed, you should install devices related files and upgrade to the service pack 1.<br />
<br />
$ sudo sh ./10.1_quartus_devices.sh<br />
$ sudo sh ./10.1_quartus_linux.sh<br />
<br />
=== Libpng12 ===<br />
Quartus II requires libpng12 to work, which can be found in AUR.<br />
<br />
$ wget https://aur.archlinux.org/packages/libpng12/libpng12.tar.gz<br />
$ tar -xaf libpng12.tar.gz<br />
$ cd libpng12<br />
$ makepkg -i PKGBUILD<br />
<br />
Trying to launch the software right now on a 64 bits system won't work. Quartus will complain that libpng12 does not have the right ELF class. This is because Quartus is launched in 32 bits mode by default. We need to add an environment variable to switch to 64 bits mode. Please, refer to the next section regarding this matter.<br />
<br />
=== Integrating Quartus II with the system ===<br />
Let's now add the Quartus bin folder to the {{ic|PATH}} variable as well as select if we want to run it in 64 bits mode. Create a {{ic|quartus.sh}} file in the {{ic|/etc/profile.d}} directory<br />
<br />
{{hc|/etc/profile.d/quartus.sh<br />
|2=<nowiki><br />
export PATH=$PATH:/opt/altera/10.1/quartus/bin<br />
if [ "`uname -m`" = "x86_64" ]; then<br />
export QUARTUS_64BIT=1<br />
fi<br />
</nowiki>}}<br />
<br />
Other environment variables related to Quartus can be found in the official installation manual http://www.altera.com/literature/manual/quartus_install.pdf<br />
<br />
And now you can try launching launching Quartus II<br />
<br />
$ source /etc/profile.d/quartus.sh<br />
$ quartus<br />
<br />
If this works, do not forget to logout/login for the change to have effect.<br />
<br />
You can add Quartus II to your system application menu by creating a {{ic|quartus.desktop}} file in your {{ic|~/.local/share/applications}} directory<br />
<br />
{{hc|~/.local/share/applications/quartus.desktop<br />
|2=<nowiki><br />
[Desktop Entry]<br />
Version=1.0<br />
Name=Quartus II<br />
Comment=Quartus II design software for Altera FPGA's<br />
Exec=/opt/altera/10.1/quartus/bin/quartus<br />
Icon=/opt/altera/10.1/quartus/adm/quartusii.png<br />
Terminal=false<br />
Type=Application<br />
Categories=Development<br />
</nowiki>}}<br />
<br />
=== USB-Blaster Driver === <br />
The USB-Blaster is a cable that allows you to download configuration data from you computer to you FPGA, CPLD or EEPROM configuration device. However Altera only provides support for RedHat Entreprise, SUSE Entreprise and Cent OS and we are required to do a little bit of work to make it work with Archlinux. If you want some more detail about this cable, please refer to http://www.altera.com/literature/ug/ug_usb_blstr.pdf<br />
<br />
The JTAG server of Quartus II is responsible for communications using the USB-Blaster cable. The JTAG server ({{ic|/opt/altera/10.1/quartus/linux/jtagd}} and {{ic|/opt/altera/10.1/quartus/linux64/jtagd}}) is searching for devices in {{ic|/proc/bus/usb/<bus_num>/<dev_num>}} and in the file {{ic|/proc/bus/usb/devices}}. Using Archlinux, these do not exist unless {{ic|usbfs}} is mounted.<br />
<br />
We need to add one rule in the {{ic|/etc/fstab}} file:<br />
{{hc|/etc/fstab<br />
|<nowiki><br />
...<br />
usbfs /proc/bus/usb usbfs defaults 0 0<br />
...<br />
</nowiki>}}<br />
Then 'reload' that file using<br />
<br />
$ sudo mount -a<br />
<br />
and now you should have a {{ic|/proc/bus/usb/devices}} file<br />
<br />
$ ls -l /proc/bus/usb/devices<br />
i-r--r--r-- 1 root root 0 Feb 10 19:05 /proc/bus/usb/devices<br />
<br />
Now to check that everything is working, plug your FPGA or CPLD board using your USB-Blaster cable and run<br />
<br />
$ sudo /opt/altera/10.1/quartus/bin/jtagconfig<br />
<br />
You should have an output similar to this one<br />
<br />
1) USB-Blaster [USB 1-1.1]<br />
020B30DD EP2C15/20<br />
<br />
In this example I have a board using a serial EEPROM to retain the FPGA configuration.<br />
<br />
There is still one last thing to do: give write access to casual users, not only the root.<br />
We can add a simple {{ic|udev}} rule.<br />
{{hc|/etc/udev/rules.d/60-usbblaster.rules<br />
|2=<nowiki><br />
ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"<br />
</nowiki>}}<br />
<br />
Let's now make a final check by relaunching {{ic|jtagconfig}} after having reloaded the udev rules.<br />
<br />
$ sudo udevadm control --reload-rules<br />
$ jtagconfig<br />
<br />
==Altera Quartus v11.1==<br />
<br />
The above does not seem to work successfully for version 11 of Quartus. Whether it is the new version, Gnome 3, or Kernel 3 I do not know.<br />
<br />
It can be run in 32-bit with Multilib however.<br />
<br />
Installation works as previously. However enable multilib and install lib32-libpng12 rather than libpng12, and do not set the QUARTUS_64BIT=1 as described above.<br />
<br />
Quartus now appears to run fine.<br />
<br />
There is no need to modify the jtagd binary with Quartus 11.1, it works fine without any modification.<br />
<br />
If your system is 64bit rename the linux64 directory in altera/<ver>/quartus/ to linux64.bak then make a link to the linux folder in the same directory and call it linux64. This should allow JTAG to run.<br />
<br />
==Workarounds for Quartus II==<br />
===Qsys can't import custom components===<br />
This bug should be fixed in version 11.1 of Quartus II. There is a problem in Quartus II when parsing the ''/etc/issue'' file for reading the distribution name (more information on the chinese version of ArchWiki, your preferred online tranlator is your friend here ;-)). The problem can be circumvented by removing the special characters from the file.<br />
* Create a backup of<br />
# mv /etc/issue /etc/issue.old<br />
* execute the following command<br />
# echo "Arch Linux \r (\n) (\l)" > /etc/issue</div>S techttps://wiki.archlinux.org/index.php?title=Intel_Quartus_Prime&diff=211027Intel Quartus Prime2012-06-23T20:16:31Z<p>S tec: There is no need to patch the JTAG server, since modern systems put both trees in the right place already.</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
[[zh-CN:Altera Design Software]]<br />
This tutorial shows how to install the following softwares form the Altera ''Design Software''<br />
* Quartus II (''Web edition'' and ''Subscription Edition'')<br />
* USB-Blaster Driver<br />
<br />
== Quartus II ==<br />
The following procedure shows how to install the '''10.1 sp1''' version of Quartus II<br />
<br />
=== Installation ===<br />
Quartus II is downloadable at: https://www.altera.com/download/software/quartus-ii-se<br />
Downloading Altera softwares requires registration. Once this is done, proceed with the download. There are three files to get<br />
* Quartus II 10.1 base software<br />
* Quartus II devices<br />
* Quartus II 10.1 service pack 1<br />
Make sure you get the GNU/Linux version!<br />
<br />
Once you have downloaded the files, you can proceed with the installation<br />
<br />
$ cd <Download-folder><br />
$ sudo sh ./10.1_quartus_linux.sh<br />
<br />
Executing this script should open a setup GUI. Just follow the instructions. For the purpose of this tutorial, I assume that you are installing Quartus II in the {{ic|/opt/altera}} folder. <br />
<br />
After the base software is installed, you should install devices related files and upgrade to the service pack 1.<br />
<br />
$ sudo sh ./10.1_quartus_devices.sh<br />
$ sudo sh ./10.1_quartus_linux.sh<br />
<br />
=== Libpng12 ===<br />
Quartus II requires libpng12 to work, which can be found in AUR.<br />
<br />
$ wget https://aur.archlinux.org/packages/libpng12/libpng12.tar.gz<br />
$ tar -xaf libpng12.tar.gz<br />
$ cd libpng12<br />
$ makepkg -i PKGBUILD<br />
<br />
Trying to launch the software right now on a 64 bits system won't work. Quartus will complain that libpng12 does not have the right ELF class. This is because Quartus is launched in 32 bits mode by default. We need to add an environment variable to switch to 64 bits mode. Please, refer to the next section regarding this matter.<br />
<br />
=== Integrating Quartus II with the system ===<br />
Let's now add the Quartus bin folder to the {{ic|PATH}} variable as well as select if we want to run it in 64 bits mode. Create a {{ic|quartus.sh}} file in the {{ic|/etc/profile.d}} directory<br />
<br />
{{hc|/etc/profile.d/quartus.sh<br />
|2=<nowiki><br />
export PATH=$PATH:/opt/altera/10.1/quartus/bin<br />
if [ "`uname -m`" = "x86_64" ]; then<br />
export QUARTUS_64BIT=1<br />
fi<br />
</nowiki>}}<br />
<br />
Other environment variables related to Quartus can be found in the official installation manual http://www.altera.com/literature/manual/quartus_install.pdf<br />
<br />
And now you can try launching launching Quartus II<br />
<br />
$ source /etc/profile.d/quartus.sh<br />
$ quartus<br />
<br />
If this works, do not forget to logout/login for the change to have effect. <br />
<br />
=== USB-Blaster Driver === <br />
The USB-Blaster is a cable that allows you to download configuration data from you computer to you FPGA, CPLD or EEPROM configuration device. However Altera only provides support for RedHat Entreprise, SUSE Entreprise and Cent OS and we are required to do a little bit of work to make it work with Archlinux. If you want some more detail about this cable, please refer to http://www.altera.com/literature/ug/ug_usb_blstr.pdf<br />
<br />
The JTAG server of Quartus II is responsible for communications using the USB-Blaster cable. The JTAG server ({{ic|/opt/altera/10.1/quartus/linux/jtagd}} and {{ic|/opt/altera/10.1/quartus/linux64/jtagd}}) is searching for devices in {{ic|/proc/bus/usb/<bus_num>/<dev_num>}} and in the file {{ic|/proc/bus/usb/devices}}. Using Archlinux, these do not exist unless {{ic|usbfs}} is mounted.<br />
<br />
We need to add one rule in the {{ic|/etc/fstab}} file:<br />
{{hc|/etc/fstab<br />
|<nowiki><br />
...<br />
usbfs /proc/bus/usb usbfs defaults 0 0<br />
...<br />
</nowiki>}}<br />
Then 'reload' that file using<br />
<br />
$ sudo mount -a<br />
<br />
and now you should have a {{ic|/proc/bus/usb/devices}} file<br />
<br />
$ ls -l /proc/bus/usb/devices<br />
i-r--r--r-- 1 root root 0 Feb 10 19:05 /proc/bus/usb/devices<br />
<br />
Now to check that everything is working, plug your FPGA or CPLD board using your USB-Blaster cable and run<br />
<br />
$ sudo /opt/altera/10.1/quartus/bin/jtagconfig<br />
<br />
You should have an output similar to this one<br />
<br />
1) USB-Blaster [USB 1-1.1]<br />
020B30DD EP2C15/20<br />
<br />
In this example I have a board using a serial EEPROM to retain the FPGA configuration.<br />
<br />
There is still one last thing to do: give write access to casual users, not only the root.<br />
We can add a simple {{ic|udev}} rule.<br />
{{hc|/etc/udev/rules.d/60-usbblaster.rules<br />
|2=<nowiki><br />
ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"<br />
</nowiki>}}<br />
<br />
Let's now make a final check by relaunching {{ic|jtagconfig}} after having reloaded the udev rules.<br />
<br />
$ sudo udevadm control --reload-rules<br />
$ jtagconfig<br />
<br />
==Altera Quartus v11.1==<br />
<br />
The above does not seem to work successfully for version 11 of Quartus. Whether it is the new version, Gnome 3, or Kernel 3 I do not know.<br />
<br />
It can be run in 32-bit with Multilib however.<br />
<br />
Installation works as previously. However enable multilib and install lib32-libpng12 rather than libpng12, and do not set the QUARTUS_64BIT=1 as described above.<br />
<br />
Quartus now appears to run fine.<br />
<br />
There is no need to modify the jtagd binary with Quartus 11.1, it works fine without any modification.<br />
<br />
If your system is 64bit rename the linux64 directory in altera/<ver>/quartus/ to linux64.bak then make a link to the linux folder in the same directory and call it linux64. This should allow JTAG to run.<br />
<br />
==Workarounds for Quartus II==<br />
===Qsys can't import custom components===<br />
This bug should be fixed in version 11.1 of Quartus II. There is a problem in Quartus II when parsing the ''/etc/issue'' file for reading the distribution name (more information on the chinese version of ArchWiki, your preferred online tranlator is your friend here ;-)). The problem can be circumvented by removing the special characters from the file.<br />
* Create a backup of<br />
# mv /etc/issue /etc/issue.old<br />
* execute the following command<br />
# echo "Arch Linux \r (\n) (\l)" > /etc/issue</div>S tec