https://wiki.archlinux.org/api.php?action=feedcontributions&user=Ilfugiuliopascal&feedformat=atomArchWiki - User contributions [en]2024-03-29T11:52:19ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Dell_XPS_13_(9360)&diff=512536Dell XPS 13 (9360)2018-03-02T21:46:23Z<p>Ilfugiuliopascal: /* Wireless */ Add info for manual update of ath10k-firmware suggested by Dell support</p>
<hr />
<div>[[Category:Dell]]<br />
[[ja:Dell XPS 13 (9360)]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Video || {{G|Working}} || i915<br />
|-<br />
| Wireless || {{G|Working}} || ath10k<br />
|-<br />
| Bluetooth || {{G|Working}}|| btusb<br />
|-<br />
| Audio || {{G|Working}} || snd_hda_intel<br />
|-<br />
| Touchpad || {{G|Working}} || hid_multitouch (mousedev)<br />
|-<br />
| Webcam || {{G|Working}} || uvcvideo<br />
|-<br />
| USB-C / Thunderbolt 3 || {{G|Working}} || ?<br />
|-<br />
| Wireless switch || {{G|Working}} || intel_hid<br />
|-<br />
| Function/Multimedia Keys || {{G|Working}} || ?<br />
|-<br />
| Fingerprint sensor || {{R|Not working}} || ?<br />
|}<br />
<br />
The Dell XPS 13 Late 2016 (9360) is the fourth-generation model of the XPS 13 line. The laptop is available since October (pre-2017 model) in both a standard edition with Windows installed as well as both a pre-2017 model and a 2017 model (with insignificant hardware differences) Developer Edition with Ubuntu 16.04 "SP1" installed, featuring kernel 4.8 as of now. There is only minor hardware differences between them, mostly in regards to the mainboard microchip manufacturers. Just like the older versions ([[Dell XPS 13 (9333)|9333]], [[Dell XPS 13 (9343)|9343]] and [[Dell XPS 13 (9350)|9350]]) it is available in different hardware configurations as well. These fourth gen models includes Intel's Kaby Lake CPUs and advertised with up to 16GB LPDDR 1866 MHz RAM and a 1TB PCI SSD. It will now also be available in Rose Gold. Prior to previous information and current specifications available provided by Dell (at least to regular customers), it is not available with the 2133 MHz RAM speed. However, some models, including those available to employees and possibly Dell partners (and/or business customers), memory speed is indeed available up to 2133 Mhz LPDDR3 (non-upgradable). The same mentioned models are also available with the Intel Core i7-7660U (aswell as i7-7560U) with the Intel 640 Iris Plus onboard graphics. Respective clock frequencies are 2.5 Ghz (up to 4GHz in Turbo-mode) and 2,4 Ghz (up to 3.8 Ghz), respectively.<br />
<br />
The installation process for Arch on the XPS 13 does not differ from any other PC. For installation help, please see the [[Installation guide]] and [[UEFI]]. This page covers the current status of hardware support on Arch, as well as post-installation recommendations.<br />
<br />
As of kernel 4.5, the Intel Kaby Lake architecture is supported.<br />
<br />
<br />
== Content Adaptive Brightness Control ==<br />
In the XPS 13 the display panels (both FHD and QHD+) come with Content Adaptive Brightness Control (usually referred to as CABC or DBC) embedded in the panel firmware - it adjusts the screen brightness depending on the content displayed on the screen. While it saves a bit of power, it is generally undesirable, especially for Linux users who are likely to be switching between dark and light screen content. Dell has issued a fix for this, however it is only available to run in Windows. The fix is available [http://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverId=312K3&lwp=rt directly from Dell].<br />
<br />
== NVM Express SSD Power Saving ==<br />
<br />
For some devices it might be necessary to set a higher value for the {{ic|nvme_core.default_ps_max_latency_us}} parameter to enable all power saving states. This parameter has to be set on the [[kernel command line]].<br />
<br />
For the Toshiba 512GB SSD used in some models of the XPS 13 the value to enable all states is 170000 (the combined latency of entering and leaving the highest power state, add {{ic|<nowiki>nvme_core.default_ps_max_latency_us=170000</nowiki>}} to your kernel command line). For the 1TB SSD this valued should be increased to 180000 instead. To check if all states are enabled you can use the {{AUR|nvme-cli}} package, which provides the {{ic|nvme-cli}} command:<br />
<br />
# nvme get-feature -f 0x0c -H /dev/nvme0<br />
get-feature:0xc (Autonomous Power State Transition), Current value:0x000001<br />
Autonomous Power State Transition Enable (APSTE): Enabled<br />
Auto PST Entries .................<br />
Entry[ 0] <br />
.................<br />
Idle Time Prior to Transition (ITPT): 1500 ms<br />
Idle Transition Power State (ITPS): 3<br />
.................<br />
Entry[ 1] <br />
.................<br />
Idle Time Prior to Transition (ITPT): 1500 ms<br />
Idle Transition Power State (ITPS): 3<br />
.................<br />
Entry[ 2] <br />
.................<br />
Idle Time Prior to Transition (ITPT): 1500 ms<br />
Idle Transition Power State (ITPS): 3<br />
.................<br />
Entry[ 3] <br />
.................<br />
Idle Time Prior to Transition (ITPT): 8500 ms<br />
Idle Transition Power State (ITPS): 4<br />
.................<br />
<br />
If the power states are enabled there should be values for ITPT and ITPS in the first entries. Also the ITPS-value of the last filled entry should be the highest power saving-state of the SSD (which can be viewed using {{ic|smartctl -a /dev/nvme0}} or {{ic|nvme id-ctrl /dev/nvme0}}).<br />
<br />
== Video ==<br />
The video should work with the {{ic|i915}} driver of the current {{Pkg|linux}} kernel. Consult [[Intel graphics]] for a detailed installation and configuration guide as well as for [[Intel graphics#Troubleshooting]].<br />
<br />
If you have the QHD+ (3200x1800) model, also check out [[HiDPI]] for UI scaling configurations.<br />
<br />
''But there might be video issues left for this model. '''Please help by contributing any feedback''' about similar issues you might have experience(d) to this bugreport (https://bugs.freedesktop.org/show_bug.cgi?id=100671).''<br />
<br />
=== Module-based Powersaving Options ===<br />
For the HD 620 graphics card the following modules are working: (see [[Intel graphics#Module-based Powersaving Options]])<br />
modeset=1 enable_rc6=1 enable_fbc=1 <br />
The first argument is to enable modesetting if it's not set by default. The second argument is needed to activate power-saving C-States. Higher values than 1 are not available for kaby lake CPUs. The third argument is for frame buffer compression power savings. These values should work well!<br />
<br />
enable_guc_loading=1 enable_guc_submission=1<br />
These arguments are used to enable GuC updates. GuC is a small proprietary binary blob released by intel to update the GuC binary in faster intervals than the kernel release does. It is used for graphics workload scheduling on the various graphics parallel engines. More details at (https://01.org/linuxgraphics/downloads/firmware). The GuC binary for kaby lake is included since firmware release linux-firmware 20170217 in the official repository. HuC is also a binary blob from intel. It's designed to offload some of the media functions from the CPU to GPU. As of kernel 4.12, HuC is loaded if GuC is enabled. One can check with 'cat /sys/kernel/debug/dri/0/i915_huc_load_status' and 'cat /sys/kernel/debug/dri/0/i915_guc_load_status'.<br />
<br />
enable_psr=1<br />
Panel Self Refresh (PSR) is working for eDP 1.3 and up and does stop the creation of new frames when the screen content is static to save energy. If you experience problems with PSR try to set 'disable_power_well=0' or disable otherwise. <br />
<br />
NOT WORKING: semaphores=1 <br />
The semaphore option is NOT working for kaby lake CPUs and won't enable even if you set the option to 1.<br />
<br />
=== Blank screen issue after booting ===<br />
If using "late start" [[KMS]] (the default) and the screen goes blank when loading modules, it may help to add {{ic|i915}} and {{ic|intel_agp}} to the initramfs or using a special [[kernel parameter]]. Consult [[Intel graphics#Blank screen during boot, when "Loading modules"]] for more information about the kernel parameter way and have a look at [[Kernel mode setting#Early KMS start]] for a guide on how to setup the modules for the initramfs.<br />
<br />
== Wireless ==<br />
<br />
The Killer 1535 Wirless Adapter is functional and the ath10k firmware is included in recent linux kernel versions. The connection speed reported by iw is limited to 1-6Mbits/s. However this is just the output being wrong. The real connection speed is not limited to this value.<br />
<br />
[http://en.community.dell.com/support-forums/network-internet-wireless/f/3324/t/19998908?pi41127=3 Some users are experiencing issues], where the connection is dropped under heavy load but reconnects within a brief moment. This might not be noticed during browsing at all but becomes apparent in online games. There is [http://en.community.dell.com/techcenter/os-applications/f/4613/p/20002634/20994007#20994007 a firmware update proposed by DELL] to fix the issue, but it might not fix all the issues. In at least one case the new firmware did not fix the connection loss / low connection speed problem. Signs of this problem seems to be two kinds of messages in dmesg:<br />
<br />
{{bc|<nowiki><br />
pcieport 0000:00:1c.4: AER: Corrected error received: id=00e4<br />
pcieport 0000:00:1c.4: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=00e4(Transmitter ID)<br />
pcieport 0000:00:1c.4: device [8086:9d14] error status/mask=00001000/00002000<br />
pcieport 0000:00:1c.4: [12] Replay Timer Timeout <br />
</nowiki>}}<br />
<br />
And also:<br />
{{bc|<br />
CPU: 3 PID: 1410 Comm: irq/133-ath10k_ Not tainted <br />
Hardware name: Dell Inc. XPS 13 9360/0839Y6, BIOS 2.1.0 08/02/2017<br />
Call Trace:<br />
<IRQ><br />
dump_stack+0x63/0x82<br />
__warn+0xcb/0xf0<br />
warn_slowpath_null+0x1d/0x20<br />
net_rx_action+0x274/0x3a0<br />
? irq_finalize_oneshot.part.35+0xe0/0xe0<br />
}}<br />
<br />
<br />
As of February 2018, Dell support suggests to update the firmware of the network adapter in the following way:<br />
<br />
# Confirm that you have QCA6174 checking the output of {{ic|sudo lspci | grep –i qca6174}}<br />
# [https://codeload.github.com/kvalo/ath10k-firmware/zip/master Download] the latest firmware and extract the contents from [https://github.com/kvalo/ath10k-firmware git]<br />
# Substitute the {{ic|QCA6174}} folder in {{ic|/lib/firmware/ath10k/}} with the one downloaded<br />
# Inside the new folder, rename {{ic|firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1}} to {{ic|firmware-4.bin}}<br />
# Reboot and test the new Killer Wi-Fi firmware<br />
<br />
== Bluetooth ==<br />
<br />
After following the instructions given at [[Bluetooth]] tethering of internet connections via phone works immediately.<br />
<br />
<br />
== Thunderbolt 3 / USB 3.1 ==<br />
<br />
The USB-C port supports Thunderbolt 3, Displayport-over-USB-C and USB power delivery as well as USB 3.1.<br />
<br />
=== Ethernet repeatedly disconnects/reconnects with Dell USB-C adapter (DA200) ===<br />
<br />
Use of a power management package (such as [[TLP]]) may cause the ethernet adapter to repeatedly disconnect and reconnect. If this happens, disable/blacklist USB autosuspend for the ethernet adapter. (On my laptop, this is the device <tt>Bus 004 Device 007: ID 0bda:8153 Realtek Semiconductor Corp</tt> in the output of <tt>lsusb</tt>.)<br />
<br />
Also disabling or reducing power of wifi may help: http://en.community.dell.com/support-forums/network-internet-wireless/f/3324/t/19995423<br />
<br />
=== USB-C Compatibility Chart ===<br />
{| class="wikitable"<br />
| '''Device''' || '''Ports''' || '''Status'''<br />
|-<br />
| [https://www.amazon.com/Anker-Adapter-Supports-Macbook-Chromebook/dp/B01MYUCWOK/ Anker USB-C to HDMI Adapter] || 4K@60Hz HDMI || {{G|Working}}<br />
|-<br />
| [http://www.apple.com/uk/shop/product/MJ262B/A/apple-29w-usb-c-power-adapter?fnode=8b Apple 29W USB-C Power Adapter] || USB-C Power || {{R|Not Working}}<br />
|-<br />
| [https://www.apple.com/uk/shop/product/MNF82B/A/87w-usb-c-power-adapter?fnode=8b Apple 87W USB-C Power Adapter] || USB-C Power || {{G|Working}}<br />
|-<br />
| [https://www.apple.com/shop/product/MMEL2AM/A/thunderbolt-3-usb-c-to-thunderbolt-2-adapter Apple Thunderbolt 3 (USB-C) to Thunderbolt 2 Adapter] || Thunderbolt 2, Thunderbolt || {{R|Not Working}}<br />
|-<br />
| [http://www.apple.com/uk/shop/product/MJ1K2ZM/A/usb-c-digital-av-multiport-adapter Apple USB-C Digital AV Multiport Adapter] || USB-C, USB-A, HDMI || {{G|Working}}<br />
|-<br />
| [https://www.arp.ch/fr/adaptateur-arp-usb-3-1-c-dvi-4044821-5115074 ARP USB 3.1 C - DVI] || DVI || {{G|Working}}<br />
|-<br />
| [https://www.amazon.co.uk/gp/product/B01H3K387Q/ref=oh_aui_search_detailpage?ie=UTF8&psc=1 Aukey USB-C Hub HDMI 4 Port] || USB-C, 4xUSB-A, HDMI || {{G|Working}}<br />
|-<br />
| [http://www.belkin.com/us/p/P-F2CU037/ Belkin USB-C to VGA Adapter] || VGA || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B01C316EIK Cable Matters USB-C Multiport Adapter] || 4K HDMI or VGA, USB 3.0, Gigabit Ethernet || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B012DT6KW2 Dell DA200] || USB-A, Ethernet, HDMI (max. 1920x1080), VGA || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/Dell-3GMVT-Thunderbolt-Dock-black/dp/B06XN6XWD7/ Dell TB16] || USB-C Power, VGA, mDP, HDMI, DP, Thunderbolt, Ethernet (only 100Mbit Mode), 2x USB 2.0, 3x USB 3.0 (Disable Thunderbolt Security in BIOS)|| {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B01FN1YK92 Dell WD15 130W] || 3xUSB-A 3.0, 2xUSB-A 2.0, Ethernet, HDMI, Mini DisplayPort, VGA, Line Out, Line In || {{G|Working}}<br />
|-<br />
| [https://www.i-tec-europe.eu/?lng=en&t=3&v=443 i-Tec USB-C Dual Display MST Dock] || HDMI, DP (4K@30Hz Single Monitor, 1920x1200@60Hz Dual Monitor), Gbit Ethernet, 3xUSB-A, USB-C, Sound, Charging @ 60W || {{G|Working}}<br />
|-<br />
| [https://www.i-tec-europe.eu/?lng=en&t=3&v=437 i-Tec USB-C Low Profile Docking Station] || HDMI 4K@30Hz, SD Card Reader, Gigabit Ethernet, 3x USB-A, USB-C, USB-PD@60W || {{G|Working}}<br />
|-<br />
| [https://www.amazon.de/gp/product/B074Z1YWHR/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1 i-tec USB-C 4K Travel Docking Station Multi Adapter] || 4K HDMI, Gigabit Ethernet (RTL8153), 2x USB 3.0, 1x USB-C Power, 1x USB-C || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/Juiced-BizHUB-Multiport-Ethernet-Delivery/dp/B01J391C3W Juiced Systems BizHUB USB-C Multiport Gigabit HDMI Hub] || 4K@30Hz HDMI, 3x USB 3.0, Gigabit Ethernet, USB-C Power, SD, Micro-SD || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/Kanex-USB-C-Adapter-Inches-White/dp/B00VBNSY0S Kanex USB-C to HDMI 4K Adapter] || HDMI || {{G|Working}}<br />
|-<br />
| [https://www.amazon.de/gp/product/B073WVKSSS/ Omars Type C Hub OMADTTCSL4PAL-UK] || Gigabit Ethernet, HDMI (4K@30 Hz), VGA, 2x USB 3.0 || {{G|Working}}<br />
|-<br />
| [http://www.pct-max.com.tw/cht/products.php?index=289 PCT UHC304] || HDMI (4K@30Hz, 2K@60Hz), Gigabit Ethernet, USB-A, USB-C || {{G|Working}}<br />
|-<br />
| [https://smile.amazon.com/QacQoc-Aluminum-Multi-Port-Charging-Ethernet/dp/B01MU1FFMP QacQoc GN30H USB-C HUB Aluminum Multi-Port TYPE C HUB Adapter with 4K HDMI] || 4K@30Hz HDMI, 3x USB 3.0, Gigabit Ethernet, USB-C Power, SD, Micro-SD || {{G|Working}}<br />
|-<br />
| [https://www.startech.com/nl/en/AV/usb-c-video-adapters/usb-c-hdmi-adapter~CDP2HD StarTech CDP2HD - USB-C to HDMI Adapter] || HDMI || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B01ANR4CYE StarTech TB32DP2 - Thunderbolt 3 Adapter] || 2 x DP (4 K, 60 Hz) || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/StarTech-com-Thunderbolt-Adapter-Compatible-DisplayPort/dp/B019FPJDQ2 StarTech TBT3TBTADAP - Thunderbolt 3 to Thunderbolt Adapter] || Thunderbolt 2, Thunderbolt || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/Tripp-Lite-External-Charging-U444-06N-DGU-C/dp/B01LYQB1XI Tripp Lite USB-C to DVI External Video Adapter] || DVI, Gbit Ethernet, USB-A, USB-C PD Charging Port || {{G|Working}}<br />
|-<br />
| [https://xiaomi-mi.com/accessories-for-laptops/xiaomi-usb-type-c-to-hdmi-multifunction-adapter/ Xiaomi USB Type-C to HDMI Multifunction Adapter] || 4K HDMI, 1x USB 3.0, USB-C Power || {{G|Working}}<br />
|}<br />
<br />
=== Thunderbolt Firmware updates ===<br />
The thunderbolt controller in the laptop has an embedded firmware. The laptop ships with firmware version NVM 18, and the most recent available version from Dell's website is NVM 21. If encountering compatibility problems with Thunderbolt accessories (such as the DA-200), the firmware may need to be updated. If you have fwupd (see: [[#Firmware Updates]]) set up then you should receive this update automatically. Otherwise, you can install it manually as follows.<br />
<br />
Dell maintains a [https://github.com/dell/thunderbolt-nvm-linux Github repository] explaining the process to update the firmware which also provides the updated payload files. If the provided payload does not work, try {{ic|0x075B_secure.bin}} inside the [http://www.dell.com/support/home/us/en/19/drivers/driversdetails?driverId=MHTHF Windows package]. This can be extracted with {{Pkg|p7zip}}.<br />
<br />
Here is a short list of steps to update the Thunderbolt-Firmware on linux 4.13+ (use at your own risk):<br />
<br />
* Install {{Pkg|libsmbios}} and {{Pkg|efivar}}<br />
* Clone [https://github.com/dell/thunderbolt-nvm-linux dell Thunderbolt Force Tool]<br />
* Build the Dell Force tool <br />
# gcc -o force_dell_tbt force_dell_tbt.c -I /usr/include/efivar/ -lsmbios_c -lefivar<br />
* Force the controller to accept updates<br />
# ./force_dell_tbt 1<br />
* Flash the 9360 firmware from the thunderbolt-nvm-linux repository to a non active NVME memory spot<br />
# dd if=payloads/0x075B.bin of=/sys/bus/thunderbolt/devices/0-0/nvm_non_active0/nvmem<br />
* Trigger the update process<br />
# echo 1 > /sys/bus/thunderbolt/devices/0-0/nvm_authenticate<br />
* At this point, your screen should flickr a couple of time. Verify that the update is done by checking that authenticate returns 0<br />
# cat /sys/bus/thunderbolt/devices/0-0/nvm_authenticate<br />
* Verify the new nvme version (it should return 21.0)<br />
# cat /sys/bus/thunderbolt/devices/0-0/nvm_version<br />
* Put the controller back in normal mode<br />
# ./force_dell_tbt 0<br />
<br />
== SATA controller ==<br />
When the SATA-controller is set to {{ic|RAID On}} in Bios, the SSD is not recognized. Set to {{ic|AHCI}} before attempting to install Arch.<br />
<br />
== Touchpad ==<br />
The touchpad has no explicit buttons. The buttons are built into the pads surface. There is a small line printed on the pad separating left from right click button. The pad has a '''middle button''' built in! (works with libinput without any configuration): To issue a middle click, simply press on the middle area right between the virtual left and click buttons - so on the small printed separator line.<br />
<br />
=== Remove psmouse errors from dmesg ===<br />
<br />
If {{ic|<nowiki>dmesg | grep -i psmouse</nowiki>}} returns an error, but your touchpad still works, then it might be a good idea to disable {{ic|psmouse}}. First create a config file:<br />
<br />
# nano /etc/modprobe.d/modprobe.conf<br />
<br />
blacklist psmouse<br />
<br />
Then add this file to {{ic|/etc/mkinitcpio.conf}}:<br />
<br />
...<br />
FILES=(/etc/modprobe.d/modprobe.conf)<br />
...<br />
<br />
Rebuild your initial ramdisk image (see [[Mkinitcpio#Image creation and activation]]).<br />
<br />
== Touchscreen ==<br />
The touchscreen works without additional configuration. The bug resulting in a disabled touchscreen after resume was fixed with kernel 4.8.5.<br />
<br />
=== Gestures ===<br />
Refer to [[libinput#Gestures]] for information about the current development state and available methods.<br />
<br />
=== Scrolling in Firefox ===<br />
See [[Firefox/Tweaks#Pixel-perfect trackpad scrolling]]. This enables both touchscreen scrolling and high-res trackpad scrolling.<br />
<br />
== Keyboard Backlight ==<br />
By default, the keyboard backlight turns off after 10 seconds of inactivity. Some users might find this too short and annoying.<br />
The delay can be increased (or decreased) by editing this file:<br />
/sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/stop_timeout<br />
<br />
You can also change the brightness (0-2) by editing the following file. This is identical to pressing F10 on your keyboard:<br />
/sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/brightness<br />
<br />
== Hidden Keyboard Keys ==<br />
There are additional Fn+<Key> (sequences) that are not marked at all on the keyboard but underlying hardware generates them anyway. Here they are (if you find more add them to the table below):<br />
{| class="wikitable"<br />
|+ Hidden Fn Keys<br />
! Fn+<Key> !! Resulting key (sequence)<br />
|-<br />
| Fn+Ins || XF86Sleep<br />
|-<br />
| Fn+Super_L || Super_R<br />
|-<br />
| Fn+B || Pause<br />
|-<br />
| Fn+R || Print<br />
|-<br />
| Fn+S || Scroll_Lock<br />
|-<br />
| Fn+A / D / E / F / G / T / Q / W || XF86Launch3<br />
|}<br />
<br />
=== Unobtrusive mode ===<br />
If enabled in BIOS, pressing Fn+F7 will disable sound, keyboard and screen backlight, the charging LED and the LED on the power button. Unfortunately there seems to be no way to disable just the LEDs- some users recommend black electrical tape.<br />
The output of `smbios-token-ctl -d` only list changes related to screen, keyboard and sound when unobtrusive mode is active.<br />
<br />
== Firmware Updates ==<br />
Dell provides firmware updates via {{Pkg|fwupd}}. See [[Flashing BIOS from Linux#fwupd]]. Please note if you have used a bind mount partition for /boot, you will not be able to use the fwupd utility; Instead format a USB as FAT32 and put the bios update .exe on. Reboot into the one-time-boot menu and update the BIOS flash through there.<br />
<br />
Alternatively, the BIOS update can be downloaded from the [http://www.dell.com/support/home/us/en/04/Drivers/DriversDetails?driverId=GVNVJ Dell website], and placed in a location accessible to the firmware. This could be the '/boot' folder, or a FAT32 formatted USB stick. Then restart your laptop and hit F12 while starting. In the boot menu choose firmware update and select the new file!<br />
<br />
== Troubleshooting ==<br />
<br />
=== EFISTUB does not boot ===<br />
The BIOS does not pass any boot parameters to the kernel. Use a UEFI [[boot loader]] instead.<br />
<br />
=== Not waking from suspend ===<br />
Update the BIOS to 1.0.7 to patch this issue.<br />
<br />
=== Power Drain after waking from standby ===<br />
<br />
Some users recognised ~2W more power consumption after waking up from standby. Go to the UEFI Firmware Settings (tap the F2 key when the Dell logo appears) and uncheck the 'Enable Thunderbolt Boot Support'. You may use {{Pkg|powertop}} or {{AUR|powerstat-git}} to reproduce and check this behaviour yourself. <br />
<br />
=== Popping sound on headphones/external speakers ===<br />
<br />
Power saving being enabled on the audio chip will cause the hissing and popping to appear. <br />
<br />
Have a look at [[ALSA/Troubleshooting#Pops when starting and stopping playback]] and [[ALSA/Troubleshooting#Popping sound after resuming from suspension]].<br />
<br />
If you are using {{Pkg|tlp}}, it will activate power saving by default when on battery. Edit {{ic|/etc/default/tlp}} and disable it.<br />
<br />
=== Crackling sound with screen changes ===<br />
<br />
Some users experienced a weird crackling, white noise sound when the display is changing its contents after waking the computer from S3 sleep.. <br />
<br />
This issue should be patched as of the 4.14.15 kernel. <br />
<br />
If you're still encountering this issue, try manually applying this patch[https://lkml.org/lkml/2018/1/22/169]. Adding the kernel parameter {{ic|1=i915.enable_guc_loading=1}} as described in [[Intel graphics]] might also help, however multiple people have reported that this does not fix the problem completely.<br />
<br />
=== Coil Whine ===<br />
<br />
Unfortunately Dell still did not fix this issue and the sound for my model was very loud. The issue seems to be connected to the graphic card. For some users, it is possible to reduce it a lot by activating frame buffer compression "enable_fbc=1" [[Intel graphics#Module-based Powersaving Options]]. The coil whine will then start again under heavy graphic load. For the touchscreen model, this may be very often, due to the high resolution screen. In a similar vein, the display can be run at a lower resolution, again reducing the load on the graphics card.<br />
<br />
=== Freezing after waking from suspend ===<br />
<br />
Installing {{aur|xf86-video-intel-git}} is [https://bbs.archlinux.org/viewtopic.php?pid=1698282#p1698282 reported] to fix this.<br />
<br />
=== Continuous hissing sound with headphones ===<br />
<br />
Open alsamixer and set "Headphone Mic Boost" gain to 10 dB (See discussion on [https://www.reddit.com/r/Dell/comments/4j1zz4/headphones_have_static_noise_with_ubuntu_1604_on/ reddit]). Note that this does reduce the volume slightly.<br />
<br />
You may also run the equivalent command:<br />
<br />
$ amixer -c PCH cset 'name=Headphone Mic Boost Volume' 1<br />
<br />
PulseAudio will rewrite these ALSA settings. So if you use PulseAudio you should change its config to make them permanent:<br />
<br />
# vi /usr/share/pulseaudio/alsa-mixer/paths/analog-input-headphone-mic.conf<br />
<br />
[Element Headphone Mic Boost]<br />
required-any = any<br />
switch = select<br />
# Replace "volume = merge" by:<br />
volume = 1<br />
override-map.1 = all<br />
override-map.2 = all-left,all-right<br />
<br />
# vi /usr/share/pulseaudio/alsa-mixer/paths/analog-input-internal-mic.conf<br />
<br />
[Element Headphone Mic Boost]<br />
switch = off<br />
# Replace "volume = off" by:<br />
volume = 1<br />
<br />
== Fingerprint sensor ==<br />
<br />
Dell officially does not support fingerprint reader functionality [http://en.community.dell.com/techcenter/os-applications/f/4613/t/20006668], however an effort on reverse engineering the protocol of Validity 138a:0090, 138a:0094, 138a:0097 fingerprint readers can be found at github [https://github.com/nmikhailov/Validity90].<br />
<br />
== See Also == <br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=217865 Arch Forum thread for Dell XPS 13 (9360)]<br />
* [http://topics-cdn.dell.com/pdf/xps-13-9360-laptop_service%20manual2_en-us.pdf Service Manual for Dell XPS 13 (9360)]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=CUPS/Printer-specific_problems&diff=450069CUPS/Printer-specific problems2016-09-09T15:40:09Z<p>Ilfugiuliopascal: /* Brother */ fix typo</p>
<hr />
<div>[[Category:Printers]]<br />
[[ja:CUPS/プリンター別の問題]]<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 />
==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}}{{Broken package link|{{aur-mirror|brother-dcp150c}}}} ||<br />
|-<br />
| DCP-7020 || [[CUPS#Foomatic|foomatic]] || Or Brother's driver.<br />
|-<br />
| DCP-7030 || {{AUR|brother-dcp7030}} ||<br />
|-<br />
| DCP-7065DN || {{AUR|brother-dcp7065dn}} ||<br />
|-<br />
| FAX-2820 || {{AUR|brother-cups-wrapper-laser}} ||<br />
|-<br />
| HL-2030 || [[CUPS#Foomatic|foomatic]] || Or {{AUR|brother-hl2030}}<br />
|-<br />
| HL-2035 || [[CUPS#Foomatic|foomatic]] || Should be compatible with any drivers for the HL-2030.<br />
|-<br />
| HL-2040 || [[CUPS#Foomatic|foomatic]] || Or {{AUR|brother-hl2040}}<br />
|-<br />
| HL-2130 || [[CUPS#Foomatic|foomatic]] (using the HL-2140 driver) || Or {{Pkg|hplip}}<br />
|-<br />
| HL-2140 || [[CUPS#Foomatic|foomatic]] || Or {{AUR|brother-hl2140}}<br />
|-<br />
| HL-2170W || [[CUPS#Foomatic|foomatic]] || Or Brother's driver. <br />
|-<br />
| HL-2230 || [[CUPS#Foomatic|foomatic]] || Same as HL-2170W. Select HL-2170W as the driver in CUPS admin when adding a printer.<br />
|-<br />
| HL-2250DN || {{AUR|brother-hl2250dn}} ||<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-3150CDW || {{AUR|brother-hl3150cdw}} ||<br />
|-<br />
| HL-3170CDW || {{AUR|brother-cups-wrapper-ac}} || Use BRScript3 Driver for HL-4070CDW<br />
|-<br />
| HL-5140 || [[CUPS#Foomatic|foomatic]] || Or Brother's driver.<br />
|-<br />
| HL-L2300D || {{AUR|brother-hll2300d}} || <br />
|-<br />
| MFC-420CN || {{AUR|brother-mfc-420cn}}{{Broken package link|{{aur-mirror|brother-mfc-420cn}}}} ||<br />
|-<br />
| MFC-440CN || {{AUR|brother-mfc-440cn}} ||<br />
|-<br />
| MFC-465CN || {{AUR|brother-mfc-465cn}}{{Broken package link|{{aur-mirror|brother-mfc-465cn}}}} ||<br />
|-<br />
| MFC-7360N || Install Brother's driver. ||<br />
|-<br />
| MFC-9320CW || Install Brother's driver. ||<br />
|-<br />
| MFC-L2700DW || {{AUR|brother-mfc-l2700dw}} || Please look also at the comments section of the AUR package page. <br />
|-<br />
| MFC-9840CDW || [[CUPS#Foomatic|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}} ||<br />
|-<br />
| MFC-J5910DW || {{AUR|brother-mfc-j5910dw}}{{Broken package link|{{aur-mirror|brother-mfc-j5910dw}}}} ||<br />
|-<br />
| MFC-J650DW || Install Brother's driver. ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
===Network printers===<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 />
{{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 />
==Canon==<br />
<br />
{{Style|It would good if the driver table could be removed or somehow merged into the main table}}<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | Driver<br />
! style="font-weight: bold;" | Description<br />
|-<br />
| {{AUR|cndrvcups-lb}}<br />
| Canon UFR II /LIPSLX Printer Driver build from source for LBP, iR & MF printers<br />
|-<br />
| {{AUR|cndrvcups-lb-bin}}<br />
| Canon UFR II/UFR II LT Printer Driver (including Canon imageCLASS MF4720w)<br />
|-<br />
| {{AUR|cnijfilter-mg4200}}<br />
| Canon IJ Printer Driver (for mg4200 series)<br />
|-<br />
| {{AUR|capt-src}}<br />
| Canon CAPT Printer Driver (for Canon i-Sensys printers)<br />
|-<br />
| {{AUR|cups-bjnp}}<br />
| CUPS back-end for the canon printers using the proprietary USB over IP BJNP protocol<br />
|}<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| iP4300<br />
| {{Pkg|gutenprint}}<br />
| Or use Canon's {{AUR|cnijfilter-ip4300}}{{Broken package link|{{aur-mirror|cnijfilter-ip4300}}}} driver, or the [http://www.turboprint.info/ TurboPrint] driver.<br />
|-<br />
| LBP810 || rowspan="34" | {{AUR|capt-src}} ||<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 />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
Some Canon printers will use a similar setup to the iP4300, so consider modifying the {{AUR|cnijfilter-ip4300}}{{Broken package link|{{aur-mirror|cnijfilter-ip4300}}}} package for other, similar printers.<br />
<br />
===CARPS===<br />
<br />
Some of Canon's printers use Canon's proprietary Canon Advanced Raster Printing System (CARPS) 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 />
===CAPT===<br />
<br />
See [[Canon CAPT]].<br />
<br />
==Dell==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| 1250C<br />
| {{AUR|foo2zjs}}<br />
| See http://cybercom.net/~dcoffin/hbpl, the patch has been merged into upstream. The printer may also work with the [[#Xerox 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 {{AUR|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 />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
===Custom drivers===<br />
====Xerox Phaser 6000B====<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 />
==Epson==<br />
<br />
{{AUR|epson-inkjet-printer-escpr}} is a driver for the Epson Inkjet Printer Driver (ESC/P-R) for Linux.<br />
<br />
There is a large selection of printer drivers/filters available in the [[AUR]].<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 />
| TX125 || {{AUR|epson-inkjet-printer-n10-nx127}} ||<br />
|-<br />
| LP-S5000 || || This printer requires a [[#Avasys|custom driver from Avasys]].<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
===Utilities===<br />
====escputil====<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 />
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 />
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 />
====Avasys====<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 ({{Pkg|lib32-libstdc++5}} on 64bit).<br />
<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 />
==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 />
| ? || {{AUR|fxlinuxprint}}{{Broken package link|{{aur-mirror|fxlinuxprint}}}} || <br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<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}}.<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Photosmart 2575 || {{Pkg|hplip}} || Or use the hpijs driver in [[CUPS#Foomatic|foomatic]].<br />
|-<br />
| DeskJet 710C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 712C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 720C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 722C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 820se || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 820Cxi || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 1000Cse || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 1000Cxi || {{AUR|pnm2ppa}} ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
====== HPLIP Driver ======<br />
<br />
{{pkg|hplip}} provides drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet printers.<br />
<br />
To run with qt frontend:<br />
# hp-setup -u<br />
<br />
To run with command line:<br />
# hp-setup -i<br />
<br />
To run systray spool manager:<br />
$ hp-systray<br />
<br />
To generate a URI for a given ip address:<br />
# hp-makeuri <ip_address><br />
<br />
PPD files are in {{ic|/usr/share/ppd/HP/}}.<br />
<br />
For printers that require the proprietary HP plugin (like the Laserjet Pro P1102w or 1020), install the {{AUR|hplip-plugin}} package from [[AUR]].<br />
<br />
{{Note|<br />
{{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 />
==Konica==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Minolta Magicolor 1600W || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 1680MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 1690MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 2480MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 2490MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 2530DL || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 4690MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
==Lexmark==<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 />
<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|| [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| MC561|| [[CUPS#Foomatic|foomatic-db-nonfree]] ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
==Samsung==<br />
<br />
{{Accuracy|All the cnijfilter drivers appear to be for Canon printers - maybe the cnijfilter comment would be better off in the Canon section?}}<br />
<br />
For printers requiring the ''cnijfilter'' drivers, search for the correct driver [https://aur.archlinux.org/packages.php?K=cnijfilter in the AUR]<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| ML-2010 || {{Pkg|splix}} ||<br />
|-<br />
| Newer printers? || {{AUR|samsung-unified-driver}} ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
==Xerox==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Phaser 3100MFP || Install Xerox's driver || See [[#Phaser 3100MFP]] for more instructions.<br />
|-<br />
| Phaser 6115MFP || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Phaser 6121MFP || [[CUPS#Foomatic|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 />
# cd printer<br />
# ./XeroxPhaser3100.install<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 /etc/sane.d directory if it doesn't already exist, because it's need by the installer:<br />
# mkdir -p /etc/sane.d<br />
Now install the driver:<br />
# cd scanner/<br />
# ./XeroxPhaser3100sc.install<br />
Again, on an x86_64 install, 32 bit libraries will be needed.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=CUPS/Printer-specific_problems&diff=450068CUPS/Printer-specific problems2016-09-09T15:39:37Z<p>Ilfugiuliopascal: /* Brother */ add brother-mfc-l2700dw</p>
<hr />
<div>[[Category:Printers]]<br />
[[ja:CUPS/プリンター別の問題]]<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 />
==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}}{{Broken package link|{{aur-mirror|brother-dcp150c}}}} ||<br />
|-<br />
| DCP-7020 || [[CUPS#Foomatic|foomatic]] || Or Brother's driver.<br />
|-<br />
| DCP-7030 || {{AUR|brother-dcp7030}} ||<br />
|-<br />
| DCP-7065DN || {{AUR|brother-dcp7065dn}} ||<br />
|-<br />
| FAX-2820 || {{AUR|brother-cups-wrapper-laser}} ||<br />
|-<br />
| HL-2030 || [[CUPS#Foomatic|foomatic]] || Or {{AUR|brother-hl2030}}<br />
|-<br />
| HL-2035 || [[CUPS#Foomatic|foomatic]] || Should be compatible with any drivers for the HL-2030.<br />
|-<br />
| HL-2040 || [[CUPS#Foomatic|foomatic]] || Or {{AUR|brother-hl2040}}<br />
|-<br />
| HL-2130 || [[CUPS#Foomatic|foomatic]] (using the HL-2140 driver) || Or {{Pkg|hplip}}<br />
|-<br />
| HL-2140 || [[CUPS#Foomatic|foomatic]] || Or {{AUR|brother-hl2140}}<br />
|-<br />
| HL-2170W || [[CUPS#Foomatic|foomatic]] || Or Brother's driver. <br />
|-<br />
| HL-2230 || [[CUPS#Foomatic|foomatic]] || Same as HL-2170W. Select HL-2170W as the driver in CUPS admin when adding a printer.<br />
|-<br />
| HL-2250DN || {{AUR|brother-hl2250dn}} ||<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-3150CDW || {{AUR|brother-hl3150cdw}} ||<br />
|-<br />
| HL-3170CDW || {{AUR|brother-cups-wrapper-ac}} || Use BRScript3 Driver for HL-4070CDW<br />
|-<br />
| HL-5140 || [[CUPS#Foomatic|foomatic]] || Or Brother's driver.<br />
|-<br />
| HL-L2300D || {{AUR|brother-hll2300d}} || <br />
|-<br />
| MFC-420CN || {{AUR|brother-mfc-420cn}}{{Broken package link|{{aur-mirror|brother-mfc-420cn}}}} ||<br />
|-<br />
| MFC-440CN || {{AUR|brother-mfc-440cn}} ||<br />
|-<br />
| MFC-465CN || {{AUR|brother-mfc-465cn}}{{Broken package link|{{aur-mirror|brother-mfc-465cn}}}} ||<br />
|-<br />
| MFC-7360N || Install Brother's driver. ||<br />
|-<br />
| MFC-9320CW || Install Brother's driver. ||<br />
|-<br />
| MFC-L2700DW || {{AUR|brother-mfc-l2700dw}} || Please look also at the comments section of the AUR package. <br />
|-<br />
| MFC-9840CDW || [[CUPS#Foomatic|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}} ||<br />
|-<br />
| MFC-J5910DW || {{AUR|brother-mfc-j5910dw}}{{Broken package link|{{aur-mirror|brother-mfc-j5910dw}}}} ||<br />
|-<br />
| MFC-J650DW || Install Brother's driver. ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
===Network printers===<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 />
{{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 />
==Canon==<br />
<br />
{{Style|It would good if the driver table could be removed or somehow merged into the main table}}<br />
<br />
{| class="wikitable"<br />
! style="font-weight: bold;" | Driver<br />
! style="font-weight: bold;" | Description<br />
|-<br />
| {{AUR|cndrvcups-lb}}<br />
| Canon UFR II /LIPSLX Printer Driver build from source for LBP, iR & MF printers<br />
|-<br />
| {{AUR|cndrvcups-lb-bin}}<br />
| Canon UFR II/UFR II LT Printer Driver (including Canon imageCLASS MF4720w)<br />
|-<br />
| {{AUR|cnijfilter-mg4200}}<br />
| Canon IJ Printer Driver (for mg4200 series)<br />
|-<br />
| {{AUR|capt-src}}<br />
| Canon CAPT Printer Driver (for Canon i-Sensys printers)<br />
|-<br />
| {{AUR|cups-bjnp}}<br />
| CUPS back-end for the canon printers using the proprietary USB over IP BJNP protocol<br />
|}<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| iP4300<br />
| {{Pkg|gutenprint}}<br />
| Or use Canon's {{AUR|cnijfilter-ip4300}}{{Broken package link|{{aur-mirror|cnijfilter-ip4300}}}} driver, or the [http://www.turboprint.info/ TurboPrint] driver.<br />
|-<br />
| LBP810 || rowspan="34" | {{AUR|capt-src}} ||<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 />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
Some Canon printers will use a similar setup to the iP4300, so consider modifying the {{AUR|cnijfilter-ip4300}}{{Broken package link|{{aur-mirror|cnijfilter-ip4300}}}} package for other, similar printers.<br />
<br />
===CARPS===<br />
<br />
Some of Canon's printers use Canon's proprietary Canon Advanced Raster Printing System (CARPS) 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 />
===CAPT===<br />
<br />
See [[Canon CAPT]].<br />
<br />
==Dell==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| 1250C<br />
| {{AUR|foo2zjs}}<br />
| See http://cybercom.net/~dcoffin/hbpl, the patch has been merged into upstream. The printer may also work with the [[#Xerox 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 {{AUR|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 />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
===Custom drivers===<br />
====Xerox Phaser 6000B====<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 />
==Epson==<br />
<br />
{{AUR|epson-inkjet-printer-escpr}} is a driver for the Epson Inkjet Printer Driver (ESC/P-R) for Linux.<br />
<br />
There is a large selection of printer drivers/filters available in the [[AUR]].<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 />
| TX125 || {{AUR|epson-inkjet-printer-n10-nx127}} ||<br />
|-<br />
| LP-S5000 || || This printer requires a [[#Avasys|custom driver from Avasys]].<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
===Utilities===<br />
====escputil====<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 />
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 />
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 />
====Avasys====<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 ({{Pkg|lib32-libstdc++5}} on 64bit).<br />
<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 />
==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 />
| ? || {{AUR|fxlinuxprint}}{{Broken package link|{{aur-mirror|fxlinuxprint}}}} || <br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<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}}.<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Photosmart 2575 || {{Pkg|hplip}} || Or use the hpijs driver in [[CUPS#Foomatic|foomatic]].<br />
|-<br />
| DeskJet 710C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 712C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 720C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 722C || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 820se || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 820Cxi || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 1000Cse || {{AUR|pnm2ppa}} ||<br />
|-<br />
| DeskJet 1000Cxi || {{AUR|pnm2ppa}} ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
====== HPLIP Driver ======<br />
<br />
{{pkg|hplip}} provides drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet printers.<br />
<br />
To run with qt frontend:<br />
# hp-setup -u<br />
<br />
To run with command line:<br />
# hp-setup -i<br />
<br />
To run systray spool manager:<br />
$ hp-systray<br />
<br />
To generate a URI for a given ip address:<br />
# hp-makeuri <ip_address><br />
<br />
PPD files are in {{ic|/usr/share/ppd/HP/}}.<br />
<br />
For printers that require the proprietary HP plugin (like the Laserjet Pro P1102w or 1020), install the {{AUR|hplip-plugin}} package from [[AUR]].<br />
<br />
{{Note|<br />
{{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 />
==Konica==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Minolta Magicolor 1600W || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 1680MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 1690MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 2480MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 2490MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 2530DL || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Minolta Magicolor 4690MF || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
==Lexmark==<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 />
<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|| [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| MC561|| [[CUPS#Foomatic|foomatic-db-nonfree]] ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
==Samsung==<br />
<br />
{{Accuracy|All the cnijfilter drivers appear to be for Canon printers - maybe the cnijfilter comment would be better off in the Canon section?}}<br />
<br />
For printers requiring the ''cnijfilter'' drivers, search for the correct driver [https://aur.archlinux.org/packages.php?K=cnijfilter in the AUR]<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| ML-2010 || {{Pkg|splix}} ||<br />
|-<br />
| Newer printers? || {{AUR|samsung-unified-driver}} ||<br />
|-<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|}<br />
<br />
==Xerox==<br />
<br />
{| class="wikitable"<br />
! Printer<br />
! Driver/filter<br />
! Notes<br />
|-<br />
| Phaser 3100MFP || Install Xerox's driver || See [[#Phaser 3100MFP]] for more instructions.<br />
|-<br />
| Phaser 6115MFP || [[CUPS#Foomatic|foomatic]] ||<br />
|-<br />
| Phaser 6121MFP || [[CUPS#Foomatic|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 />
# cd printer<br />
# ./XeroxPhaser3100.install<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 /etc/sane.d directory if it doesn't already exist, because it's need by the installer:<br />
# mkdir -p /etc/sane.d<br />
Now install the driver:<br />
# cd scanner/<br />
# ./XeroxPhaser3100sc.install<br />
Again, on an x86_64 install, 32 bit libraries will be needed.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Sup&diff=435957Sup2016-05-21T19:22:04Z<p>Ilfugiuliopascal: /* Installation */ add xapian-ruby dependency</p>
<hr />
<div>[[Category:Email clients]]<br />
[[zh-TW:Sup]]<br />
'''Sup''' is a powerful new mail client developed for people who manage lots of mail. It can be viewed as a cross between Mutt and Gmail, with very fast operation and search, tagging, automatic contact management, support for a wide variety of accounts at once, and more.<br />
<br />
== Installation ==<br />
<br />
Install {{AUR|sup-git}} from the [[AUR]]. Although the developers suggest that you install Sup via:<br />
<br />
$ gem install xapian-ruby<br />
$ gem install sup<br />
<br />
As you get the latest version directly from the developers.<br />
<br />
== Configuration ==<br />
<br />
Sup comes with an easy to use configuration tool called {{Ic|sup-config}}. To use it, start it in the console and walk through the steps, which are as follows:<br />
<br />
# Enter your full name.<br />
# Enter your primary e-mail address, as well as any alternate e-mail addresses.<br />
# Enter the path to your signature file, if you have one.<br />
# Enter the editor that should be used to compose new mail, as well as any arguments that should be passed to it.<br />
# Add sources for your mail, including:<br />
## mbox files<br />
## maildir directories<br />
<br />
Support for remote sources (POP3, IMAP, IMAPS, and mbox+ssh) was removed in the 0.12 release. <br />
<br />
Sup is for the most part only an MUA (mail user agent) and cannot handle downloading mail on its own. You can use tools like offlineimap, fetchmail, and rsync to transfer email to the local system mbox or maildir folders. <br />
<br />
The [https://github.com/sup-heliotrope/sup/wiki/Complete-gmail-configuration sup wiki has an example] for configuring a gmail+imap source using offlineimap. The [[Mutt#POP3]] subsection shows some additional mail transfer methods.<br />
<br />
After the email sources have been added, {{Ic|sup-config}} will execute the {{Ic|sup-sync}} command to import mail into your mailbox.<br />
<br />
== Usage ==<br />
<br />
Execute the {{ic|sup}} command to start the Sup mail client. The program should show the messages imported by {{ic|sup-config}}.<br />
<br />
The most important key for new users to remember is the {{ic|?}} key. This will display a full list of keyboard commands at any point, reminding new users how to navigate the program.<br />
<br />
To navigate between threads, use the arrow keys or the {{ic|j}} and {{ic|k}} keys ({{ic|Shift+j}} and {{ic|Shift+k}} work like the Page Up and Page Down keys). To jump between threads with new messages, press the Tab key. Sup doesn't load all threads by default; press {{ic|Shift+m}} to load more (more messages will automatically load to fill the window).<br />
<br />
To view a thread, select it and press the {{ic|Enter}} key. To expand or collapse an individual message while viewing a thread, select the message and press the {{ic|Enter}} key. Press {{ic|Shift+n}} to expand only new messages (the default view) or {{ic|Shift+e}} to toggle the state of all messages. Press {{ic|o}} to show or hide hidden parts of a message (such as signatures).<br />
<br />
To navigate between messages in a thread, press the {{ic|n}} and {{ic|p}} keys. To display the headers on a message, press the {{ic|h}} key.<br />
<br />
To cycle through buffers, press the {{ic|b}} key, or press the {{ic|;}} key to view a list of all of the open buffers. To kill a buffer, press the {{ic|x}} key.<br />
<br />
To archive a thread, press the {{ic|a}} key. This will hide it from the inbox until someone replies to it, at which point it will reappear. To kill a thread, press the {{ic|&}} key. This is equivalent to Gmail's "mute" function, which hides a message even if people reply to it. It will never re-appear in the inbox, but it will still show up in search results.<br />
<br />
To star a thread, press the {{ic|*}} key. To mark a thread as spam, press the {{ic|Shift+s}} key. Sup doesn't have any built-in spam filter; for that, consider a program such as {{pkg|spamassassin}}.<br />
<br />
To tag a thread, press the {{ic|t}} key. To label the messages in a thread, press the {{ic|l}} key. To search labels, press the {{ic|Shift+l}} key. {{ic|Enter}} a label for which to search or press the {{ic|Enter}} key to call up a list of labels. To perform a full text search, press the {{ic|\}} key.<br />
<br />
To view a list of contacts, press the {{ic|Shift+c}} key. To e-mail one of the people on the list, select his or her name and press the {{ic|Enter}} key.<br />
<br />
== Back-up and Restore ==<br />
<br />
Backing-up e-mail is very important. To ensure that you do not lose anything, first back up the sources, such as mbox files and maildir directories, then run:<br />
<br />
$ sup-dump > ''filename''<br />
<br />
This will back-up all message states in a text file. To restore your message states from this text file, simply run:<br />
<br />
$ sup-sync [<source>+] --restored --restore ''filename''<br />
<br />
Just remember that the commands above only back-up and restore message states. The messages themselves will need to be backed-up separately.<br />
<br />
== List of Keybindings ==<br />
<br />
=== Keybindings from inbox-mode ===<br />
<br />
a : Archive thread (remove from inbox)<br />
A : Archive thread (remove from inbox) and mark read<br />
<br />
=== Keybindings from thread-index-mode ===<br />
<br />
M : Load 20 more threads<br />
!! : Load all threads (may list a _lot_ of threads)<br />
^G : Cancel current search<br />
@ : Refresh view <br />
* : Star or unstar all messages in thread<br />
N : Toggle new/read status of all messages in thread<br />
l : Edit or add labels for a thread <br />
e : Edit message (drafts only) <br />
S : Mark/unmark thread as spam<br />
d : Delete/undelete thread <br />
& : Kill thread (never to be seen in inbox again)<br />
$ : Save changes now <br />
tab : Jump to next new thread<br />
r : Reply to latest message in a thread<br />
f : Forward latest message in a thread <br />
t : Tag/untag selected thread<br />
T : Tag/untag all threads<br />
g : Tag matching threads<br />
+, = : Apply next command to all tagged threads<br />
# : Force tagged threads to be joined into the same thread<br />
u : Undo the previous action<br />
<br />
=== Keybindings from thread-view-mode ===<br />
<br />
h : Toggle detailed header<br />
H : Show full message header<br />
V : Show full message (raw form)<br />
<enter> : Expand/collapse or activate item<br />
E : Expand/collapse all messages<br />
e : Edit draft<br />
y : Send draft<br />
l : Edit or add labels for a thread<br />
o : Expand/collapse all quotes in a message<br />
n : Jump to next open message<br />
p : Jump to previous open message<br />
z : Align current message in buffer<br />
* : Star or unstar message<br />
N : Toggle unread/read status of message<br />
r : Reply to a message<br />
f : Forward a message or attachment<br />
i : Edit alias/nickname for a person<br />
D : Edit message as new<br />
s : Save message/attachment to disk<br />
S : Search for messages from particular people<br />
m : Compose message to person<br />
( : Subscribe to/unsubscribe from mailing list<br />
) : Subscribe to/unsubscribe from mailing list<br />
| : Pipe message or attachment to a shell command<br />
.a : Archive this thread and kill buffer<br />
.d : Delete this thread and kill buffer<br />
.s : Mark this thread as spam and kill buffer<br />
.N : Mark this thread as unread and kill buffer<br />
,a : Archive this thread, kill buffer, and view next<br />
,d : Delete this thread, kill buffer, and view next<br />
,s : Mark this thread as spam, kill buffer, and view next<br />
,N : Mark this thread as unread, kill buffer, and view next<br />
,n : Kill buffer, and view next<br />
]a : Archive this thread, kill buffer, and view previous<br />
]d : Delete this thread, kill buffer, and view previous<br />
]s : Mark this thread as spam, kill buffer, and view previous<br />
]N : Mark this thread as unread, kill buffer, and view previous<br />
]n : Kill buffer, and view previous<br />
<br />
=== Keybindings from contact-list-mode ===<br />
<br />
M : Load 10 more contacts<br />
D : Drop contact list and reload<br />
a, i : Edit alias/or name for contact<br />
t : Tag/untag current line<br />
+ : Apply next command to all tagged items<br />
S : Search for messages from particular people<br />
<br />
=== Keybindings from line-cursor-mode ===<br />
<br />
<down arrow>, j : Move cursor down one line<br />
<up arrow>, k : Move cursor up one line<br />
<enter> : Select this item<br />
<br />
=== Keybindings from scroll-mode ===<br />
<br />
J, ^E : Down one line<br />
K, ^Y : Up one line<br />
<left arrow>, h : Left one column<br />
<right arrow> : Right one column<br />
<page down>, <space>, ^F : Down one page<br />
<page up>, p, <backspace>, ^B : Up one page<br />
^D : Down one half page<br />
^U : Up one half page<br />
<home>, ^, 1 : Jump to top<br />
<end>, 0 : Jump to bottom<br />
[ : Jump to the left<br />
/ : Search in current buffer<br />
n : Jump to next search occurrence in buffer<br />
<br />
=== Global keybindings ===<br />
<br />
q : Quit Sup, but ask first<br />
Q : Quit Sup immediately<br />
? : Show help<br />
b : Switch to next buffer<br />
B : Switch to previous buffer<br />
x : Kill the current buffer<br />
; : List all buffers<br />
C : List contacts<br />
^L : Redraw screen<br />
\, F : Search all messages<br />
U : Show all unread messages<br />
L : List labels<br />
P : Poll for new messages<br />
m, c : Compose new message<br />
^G : Do nothing<br />
R : Edit most recent draft message<br />
<br />
== Troubleshooting ==<br />
<br />
=== Crashing with: Illegal instruction (core dumped) ===<br />
{{Ic|sup}} uses a search engine called Xapian which is being compiled to use SSE2 instructions. If your CPU does not support SSE2 instructions you will encounter the error message:<br />
<br />
Illegal instruction (core dumped)<br />
<br />
To solve this you have to compile Xapian with the flag {{Ic|--disable-sse}}.<br />
<br />
1. Looking at the {{Ic|PKGBUILD}} for {{AUR|ruby-xapian-ruby}} you can see that it downloads a gem from https://rubygems.org/gems/xapian-ruby. Download the gem.<br />
<br />
2. run these commands<br />
<br />
gem unpack xapian-ruby.gem<br />
gem unpack --spec xapian-ruby.gem<br />
mv xapian-ruby.gemspec xapian-ruby/<br />
cd xapian-ruby<br />
<br />
3. You are suppose to edit the {{Ic|Rakefile}}. Your goal is to change the 2 lines where it runs the config changes. All you have to do is to append {{Ic|--disable-sse}} to the end of those configuration commands:<br />
<br />
system! "./configure --prefix=#{prefix} --exec-prefix=#{prefix} --disable-sse"<br />
system! "./configure --prefix=#{prefix} --exec-prefix=#{prefix} --with-ruby --disable-sse"<br />
<br />
And save those changes.<br />
<br />
4. run<br />
<br />
gem build xapian-ruby.gemspec<br />
gem install --local xapian-ruby.gem<br />
<br />
This should solve the problem with Xapian not running on old CPUs. It should also be mentioned that if it is your first time you run {{Ic|sup-config}} and you have done everything correctly but still end up wih the error message<br />
<br />
This Sup version expects a v4 index, but you have an existing v0 index. Please run sup-dump to save your labels, move /home/user/.sup/xapian out of the way, and run sup-sync --restore. (RuntimeError)<br />
Rats, that failed. You may have to do it manually.<br />
<br />
it is possible that you also have this issue, try to run the other executables such as {{Ic|sup}} or {{Ic|sup-dump}} to see if you get the Illegal instruction (core dumped) error message.<br />
<br />
== See also ==<br />
<br />
* [http://supmua.org/ Website]<br />
* [https://github.com/sup-heliotrope/sup/wiki Wiki]<br />
* [https://github.com/sup-heliotrope/sup/blob/develop/README.md README]<br />
* [https://github.com/sup-heliotrope/sup/blob/develop/doc/FAQ.txt FAQ]<br />
* [https://github.com/sup-heliotrope/sup/blob/develop/doc/Philosophy.txt Philosophical statement]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Talk:HiDPI&diff=429301Talk:HiDPI2016-04-02T12:59:14Z<p>Ilfugiuliopascal: /* Problematic QT5 hints */</p>
<hr />
<div>== Java ==<br />
<br />
Is there already a workaround for java-based apps? They look really ugly on hidpi :/ {{Unsigned|16:28, 25 June 2014|Avarty}}<br />
<br />
== Instant messengers ==<br />
<br />
I think it would be worthwhile to change section 5 from 'Skype' to 'Instant Messengers / Chat' and add others as well. Telegram Messenger supports HiDPI perfectly, it has an option for 200% scaling in the settings. It is also supported on almost every major platform. {{Unsigned|05:26, 8 January 2015|Veazer}}<br />
<br />
== Console ==<br />
<br />
Could you potentially temporarily change the console frame buffer resolution (i.e. during installation?) {{Unsigned|18:50, 9 October 2015|Georgewhite5}}<br />
<br />
I found with the i915 driver I needed to add i915 to the MODULES section of /etc/mkinitcpio.conf for me to be able to set a large font (anything bigger than 16) for the vconsoles. systemd-vconsole-setup.service failed to start otherwise with with the following error: "/usr/bin/setfont failed with error code 71" [[User:Raoulmillais|Raoulmillais]] ([[User talk:Raoulmillais|talk]]) 18:29, 6 December 2015 (UTC)<br />
<br />
The archlinux iso doesn't come with lot of fonts. the best I got is sun12x22. This will make your life easy.<br />
Try running following command on prompt<br />
setfont sun12x22<br />
{{unsigned|16:24, 17 December 2015|Mohit310}}<br />
<br />
== KDE 5 - PLASMA ==<br />
I tried font settings in KDE Plasma but it doesn't change the DPI. Is there any other way to work around this.<br />
<br />
{{unsigned|16:26, 17 December 2015|Mohit310}}<br />
<br />
== Gnome Instructions are incomplete ==<br />
<br />
When you use GNOME by default on a HiDPI system, it autodetects the settings to use. In fact, it doesn't even set the environment variable that this article references. In reality, it stays at zero and it's autodetected. But another setting that is part of a gsettings propertybag is also changed.<br />
<br />
This is confirmed by looking at the source code for gnome-tweak-tool and seeing that it also changes XSettingsOverrides: https://github.com/GNOME/gnome-tweak-tool/blob/master/gtweak/tweaks/tweak_group_windows.py#L64<br />
<br />
I think it's worth mentioning that this value probably doesn't need to be adjusted. GNOME has autodetected it for a few releases now. Certainly with 3.20 if the mixed-hidpi work lands.<br />
<br />
{{unsigned|02:35, 27 December 2015|Colemickens}}<br />
<br />
== Gnome Scaling for Different Devices ==<br />
<br />
Recent changes asked the question:<br />
<br />
The scaling factor is obviously different for every device. What is the advantage of using xrandr over gsettings (i.e. gsettings set org.gnome.desktop.interface scaling-factor 1.5), let alone combining them?<br />
<br />
Answer: <br />
<br />
gsettings set org.gnome.desktop.interface scaling-factor 1.5<br />
<br />
...generates an error. 1.5 is not allowed. The "period" is an illegal charater. You can only set 1 (100%), 2 (200%), 3 (300%), etc. As mentioned in the recent edit, this is not enough resolution for several devices which require 1.5, 2.5, 2.25 1.75 and so on. <br />
<br />
Therefore, a tip/trick/hack/note was added that describes using the combination of <code>xrandr</code> and gsettings to achieve a scale of 1.5 (150%) without fonts becoming 'fuzzy'.<br />
<br />
The real question should be: "Then why not use xrandr to change the scale the other way, say 1920 / 1.5?" <br />
<br />
Answer: Then you'll have fuzzy fonts and lines.<br />
<br />
Hopefully this answers the factual accuracy request.<br />
<br />
[[User:Eduncan911|Eduncan911]] ([[User talk:Eduncan911|talk]]) 22:41, 7 January 2016 (UTC)<br />
<br />
:One also has the option to scale up to 2 with scaling-factor and scale it back down with the text-scaling-factor. It's easier and looks better in my experiences. And yes, the text-scaling-factor affects the physical size of other UI elements besides just text. [[User:Colemickens|Colemickens]] ([[User talk:Colemickens|talk]]) 22:47, 7 January 2016 (UTC)<br />
<br />
:Excellent idea! How about adding it as an alternative method? Though, in my opinion, that takes up too much space. To each his own i suppose! Adding it as an alternative to mine allows customization. <br />
:EDIT: I just tried this and the title bars are all wacky, along with the topbar. I wouldn't recommend it at all.<br />
:Now, I must state that I just tested this on a fresh new install on a system with no other changes to DPI or scale (no GTK, no scaling tricks, nothing). As a matter of fact, i even booted off of an Arch Live CD (made by Antergos) and tested it again to make sure it wasn't my bare-metal + Gnome install I just finished. If you are stating that it looks good on your system, then perhaps you've done other scaling that resolves this issues. Which, IMO again, is overkill if you can solve everything with 1 or 2 combinations. [[User:Eduncan911|Eduncan911]] ([[User talk:Eduncan911|talk]]) 23:19, 7 January 2016 (UTC)<br />
<br />
: Probably these "fuzzy" fonts were something I have missed when I did my edit today - please feel free to edit the way you think is appropriate. BTW how could I look at these fuzzy fonts? I checked Microsoft Word Online - looks good with "scale" approach, identical to "scale-from". [[User:F3flight|F3flight]] ([[User talk:F3flight|talk]]) 22:54, 3 February 2016 (UTC)<br />
<br />
: Actually please re-check my last edit because it looks like it is not the same that has been proposed here - I do not do text-scale-factor nor do I do scale down by lowering the current res, like "1920/1.5". I feel like my approach keeps everything crisp while providing easier granularity then trying different pre-calculated values. Please re-check and let me know. [[User:F3flight|F3flight]] ([[User talk:F3flight|talk]]) 23:01, 3 February 2016 (UTC)<br />
<br />
== Problematic QT5 hints ==<br />
<br />
QT5 hints made my system unusable - everything was way too big and by everything I mean all system components. Hyperlink to problematic section: [[HiDPI#Qt_5]] [[User:Gregosky|Gregosky]] ([[User talk:Gregosky|talk]]) 22:21, 29 March 2016 (UTC)<br />
<br />
:The parameters are multiplicative it says in the blog post faq. If it does not work like described, put a [[Template:Accuracy]] to the section please. You can link this talk item in it, this way others might see and give feedback. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 07:41, 30 March 2016 (UTC)<br />
<br />
::I will leave [[Template:Accuracy]] as advised, thanks [[User:Indigo|Indigo]]! [[User:Gregosky|Gregosky]] ([[User talk:Gregosky|talk]]) 13:38, 30 March 2016 (UTC)<br />
<br />
:Until few weeks ago the configuration suggested in the wiki worked, but then Qt apps became big and I had to remove the /etc/profile.d/qt-hidpi.sh in order to fix it. If it is the same for everyone I think we can consider the Qt5 issue solved and remove the section/explain that Qt5 are now working well with hidpi. --[[User:Ilfugiuliopascal|Ilfugiuliopascal]] ([[User talk:Ilfugiuliopascal|talk]]) 12:59, 2 April 2016 (UTC)</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=OfflineIMAP&diff=419525OfflineIMAP2016-02-07T17:54:04Z<p>Ilfugiuliopascal: /* Option 1: using gnomekeyring Python module */</p>
<hr />
<div>[[Category:Email clients]]<br />
[[ja:OfflineIMAP]]<br />
{{Related articles start}}<br />
{{Related|isync}}<br />
{{Related|notmuch}}<br />
{{Related|msmtp}}<br />
{{Related articles end}}<br />
<br />
[http://offlineimap.org/ OfflineIMAP] is a Python utility to sync mail from IMAP servers. It does not work with the POP3 protocol or mbox, and is usually paired with a MUA such as [[Mutt]].<br />
<br />
== Installation ==<br />
<br />
Install {{pkg|offlineimap}}. For a development version, install {{AUR|offlineimap-git}}.<br />
<br />
== Configuration ==<br />
<br />
Offlineimap is distributed with two default configuration files, which are both located in {{ic|/usr/share/offlineimap/}}. {{ic|offlineimap.conf}} contains every setting and is thorougly documented. Alternatively, {{ic|offlineimap.conf.minimal}} is not commented and only contains a small number of settings (see: [[#Minimal|Minimal]]).<br />
<br />
Copy one of the default configuration files to {{ic|~/.offlineimaprc}}.<br />
<br />
{{note|Writing a comment after an option/value on the same line is invalid syntax, hence take care that comments are placed on their own separate line.}}<br />
<br />
=== Minimal ===<br />
<br />
The following file is a commented version of {{ic|offlineimap.conf.minimal}}.<br />
<br />
{{hc|~/.offlineimaprc|<nowiki><br />
[general]<br />
# List of accounts to be synced, separated by a comma.<br />
accounts = main<br />
<br />
[Account main]<br />
# Identifier for the local repository; e.g. the maildir to be synced via IMAP.<br />
localrepository = main-local<br />
# Identifier for the remote repository; i.e. the actual IMAP, usually non-local.<br />
remoterepository = main-remote<br />
# Status cache. Default is plain, which eventually becomes huge and slow.<br />
status_backend = sqlite<br />
<br />
[Repository main-local]<br />
# Currently, offlineimap only supports maildir and IMAP for local repositories.<br />
type = Maildir<br />
# Where should the mail be placed?<br />
localfolders = ~/Maildir<br />
<br />
[Repository main-remote]<br />
# Remote repos can be IMAP or Gmail, the latter being a preconfigured IMAP.<br />
type = IMAP<br />
remotehost = host.domain.tld<br />
remoteuser = username<br />
</nowiki>}}<br />
<br />
=== Selective folder synchronization ===<br />
<br />
For synchronizing only certain folders, you can use a [http://offlineimap.org/doc/nametrans.html#folderfilter folderfilter] in the '''remote''' section of the account in {{ic|~/.offlineimaprc}}. For example, the following configuration will only synchronize the folders {{ic|Inbox}} and {{ic|Sent}}:<br />
<br />
{{hc|~/.offlineimaprc|2=<br />
[Repository main-remote]<br />
# Synchronize only the folders Inbox and Sent:<br />
folderfilter = lambda foldername: foldername in ["Inbox", "Sent"]<br />
...<br />
}}<br />
<br />
For more options, see the [http://offlineimap.org/doc/nametrans.html#folderfilter official documentation].<br />
<br />
== Usage ==<br />
<br />
Before running offlineimap, create any parent directories that were allocated to local repositories:<br />
$ mkdir ~/Maildir<br />
<br />
Now, run the program:<br />
$ offlineimap<br />
<br />
Mail accounts will now be synced. If anything goes wrong, take a closer look at the error messages. OfflineIMAP is usually very verbose about problems; partly because the developers did not bother with taking away tracebacks from the final product.<br />
<br />
== Miscellaneous ==<br />
<br />
=== Running offlineimap in the background ===<br />
<br />
Most other mail transfer agents assume that the user will be using the tool as a [[daemon]] by making the program sync periodically by default. In offlineimap, there are a few settings that control backgrounded tasks.<br />
<br />
Confusingly, they are spread thin all-over the configuration file:<br />
<br />
{{hc|~/.offlineimaprc|<nowiki><br />
# In the general section<br />
[general]<br />
# Controls how many accounts may be synced simultaneously<br />
maxsyncaccounts = 1<br />
<br />
# In the account identifier<br />
[Account main]<br />
# Minutes between syncs<br />
autorefresh = 5<br />
# Number of quick-syncs between autorefreshes. Quick-syncs do not update if the<br />
# only changes were to IMAP flags<br />
quick = 10<br />
<br />
# In the remote repository identifier<br />
[Repository main-remote]<br />
# Instead of closing the connection once a sync is complete, offlineimap will<br />
# send empty data to the server to hold the connection open. A value of 60<br />
# attempts to hold the connection for a minute between syncs (both quick and<br />
# autorefresh).This setting has no effect if autorefresh and holdconnectionopen<br />
# are not both set.<br />
keepalive = 60<br />
# OfflineIMAP normally closes IMAP server connections between refreshes if<br />
# the global option autorefresh is specified. If you wish it to keep the<br />
# connection open, set this to true. This setting has no effect if autorefresh<br />
# is not set.<br />
holdconnectionopen = yes<br />
</nowiki>}}<br />
<br />
==== systemd service ====<br />
<br />
When configured to run background jobs, offlineimap can be managed with the following systemd service:<br />
<br />
{{hc|/etc/systemd/system/offlineimap@.service|<nowiki><br />
[Unit]<br />
Description=Start offlineimap as a daemon<br />
Requires=network-online.target<br />
After=network.target<br />
<br />
[Service]<br />
User=%i<br />
ExecStart=/usr/bin/offlineimap<br />
KillSignal=SIGUSR2<br />
Restart=always<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Then [[enable]] {{ic|offlineimap@''user''.service}}.<br />
<br />
{{Note|If your configuration involves [[D-Bus]] operations, e.g. [[#Gnome keyring]], you should adapt this service for systemd user instance as described in [[systemd/User]] instead of using it directly. This approach is necessary to set the {{ic|DBUS_SESSION_BUS_ADDRESS}} variable correctly.}}<br />
<br />
=== Automatic mailbox generation for mutt ===<br />
<br />
[[Mutt]] cannot be simply pointed to an IMAP or maildir directory and be expected to guess which subdirectories happen to be the mailboxes, yet offlineimap can generate a muttrc fragment containing the mailboxes that it syncs.<br />
<br />
{{hc|~/.offlineimaprc|<nowiki><br />
[mbnames]<br />
enabled = yes<br />
filename = ~/.mutt/mailboxes<br />
header = "mailboxes "<br />
peritem = "+%(accountname)s/%(foldername)s"<br />
sep = " "<br />
footer = "\n"<br />
</nowiki>}}<br />
<br />
Then add the following lines to {{ic|~/.mutt/muttrc}}.<br />
<br />
{{hc|~/.mutt/muttrc|<nowiki><br />
# IMAP: offlineimap<br />
set folder = "~/Mail"<br />
source ~/.mutt/mailboxes<br />
set spoolfile = "+account/INBOX"<br />
set record = "+account/Sent\ Items"<br />
set postponed = "+account/Drafts"<br />
</nowiki>}}<br />
<br />
{{ic|account}} is the name you have given to your IMAP account in {{ic|~/.offlineimaprc}}.<br />
<br />
=== Gmail configuration ===<br />
<br />
This remote repository is configured specifically for Gmail support, substituting folder names in uppercase for lowercase, among other small additions. Keep in mind that this configuration does not sync the ''All Mail'' folder, since it is usually unnecessary and skipping it prevents bandwidth costs:<br />
<br />
{{hc|~/.offlineimaprc|<nowiki><br />
[Repository gmail-remote]<br />
type = Gmail<br />
remoteuser = user@gmail.com<br />
remotepass = password<br />
nametrans = lambda foldername: re.sub ('^\[gmail\]', 'bak',<br />
re.sub ('sent_mail', 'sent',<br />
re.sub ('starred', 'flagged',<br />
re.sub (' ', '_', foldername.lower()))))<br />
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail']<br />
# Necessary as of OfflineIMAP 6.5.4<br />
sslcacertfile = /etc/ssl/certs/ca-certificates.crt<br />
</nowiki>}}<br />
<br />
{{Note|<br />
* If you have Gmail set to another language, the folder names may appear translated too, e.g. "verzonden_berichten" instead of "sent_mail".<br />
* After version 6.3.5, offlineimap also creates remote folders to match your local ones. Thus you may need a nametrans rule for your local repository too that reverses the effects of this nametrans rule. If you don't want to make a reverse nametrans rule, you can disable remote folder creation by putting this in your remote configuration: {{ic|<nowiki>createfolders = False</nowiki>}}<br />
* As of 1 October 2012 gmail SSL certificate fingerprint is not always the same. This prevents from using {{ic|cert_fingerprint}} and makes the {{ic|sslcacertfile}} way a better solution for the SSL verification (see [[#SSL fingerprint does not match]]).<br />
}}<br />
<br />
=== Password management ===<br />
<br />
==== .netrc ====<br />
<br />
Add the following lines to your {{ic|~/.netrc}}:<br />
<br />
machine hostname.tld<br />
login [your username]<br />
password [your password]<br />
<br />
Do not forget to give the file appropriate rights like 600 or 700:<br />
$ chmod 600 ~/.netrc<br />
<br />
==== Using GPG ====<br />
<br />
GNU Privacy Guard can be used for storing a password in an encrypted file. First set up [[GnuPG]] and then follow the steps in this section. It is assumed that you can use your GPG private key [[GnuPG#gpg-agent|without entering a password]] all the time.<br />
<br />
First type in the password for the email account in a plain text file. Do this in a secure directory with {{ic|700}} permissions located on a [[tmpfs]] to avoid writing the unencrypted password to the disk. Then encrypt the file with your private key:<br />
<br />
$ gpg --default-recipient-self -e ''/path/to/plain/password''<br />
<br />
Remove the plain text file since it is no longer needed. Move the encrypted file to the final location, e.g. {{ic|~/.offlineimappass.gpg}}.<br />
<br />
Now create a python function that will decrypt the password:<br />
<br />
{{hc|~/.offlineimap.py|2=<br />
#! /usr/bin/env python2<br />
from subprocess import check_output<br />
<br />
def get_pass():<br />
return check_output("gpg -dq ~/.offlineimappass.gpg", shell=True).strip("\n")<br />
}}<br />
<br />
Load this file from {{ic|~/.offlineimaprc}} and specify the defined function:<br />
<br />
{{hc|~/.offlineimaprc|2=<br />
[general]<br />
# Path to file with arbitrary Python code to be loaded<br />
pythonfile = ~/.offlineimap.py<br />
...<br />
<br />
[Repository ''example'']<br />
# Decrypt and read the encrypted password<br />
remotepasseval = get_pass()<br />
...<br />
}}<br />
<br />
==== Using pass ====<br />
<br />
[[pass]] is a simple password manager from the command line based on GPG.<br />
<br />
First create a password for your email account(s):<br />
<br />
$ pass insert Mail/''account''<br />
<br />
Now create a python function that will decrypt the password:<br />
<br />
{{hc|~/.offlineimap.py|2=<br />
#! /usr/bin/env python2<br />
from subprocess import check_output<br />
<br />
def get_pass(account):<br />
return check_output("pass Mail/" + account, shell=True).rstrip()<br />
}}<br />
<br />
This is an example for a multi-account setup. You can customize the argument to ''pass'' as defined previously.<br />
<br />
Load this file from {{ic|~/.offlineimaprc}} and specify the defined function: <br />
<br />
{{hc|~/.offlineimaprc|2=<br />
[general]<br />
# Path to file with arbitrary Python code to be loaded<br />
pythonfile = ~/.offlineimap.py<br />
...<br />
<br />
[Repository Gmail]<br />
# Decrypt and read the encrypted password<br />
remotepasseval = get_pass("Gmail")<br />
...<br />
}}<br />
<br />
==== Gnome keyring ====<br />
<br />
In configuration for remote repositories the remoteusereval/remotepasseval fields can be set to custom python code that evaluates to the username/password. The code can be a call to a function defined in a Python script pointed to by 'pythonfile' config field. Create {{ic|~/.offlineimap.py}} according to either of the two options below and use it in the configuration:<br />
<br />
{{bc|<nowiki><br />
[general]<br />
pythonfile = ~/.offlineimap.py<br />
<br />
[Repository examplerepo]<br />
type = IMAP<br />
remotehost = mail.example.com<br />
remoteusereval = get_username("examplerepo")<br />
remotepasseval = get_password("examplerepo")<br />
</nowiki>}}<br />
<br />
===== Option 1: using gnomekeyring Python module =====<br />
Install {{pkg|python2-gnomekeyring}}. Then:<br />
<br />
{{hc|~/.offlineimap.py|<nowiki><br />
#! /usr/bin/env python2<br />
<br />
import gnomekeyring as gkey<br />
<br />
def set_credentials(repo, user, pw):<br />
KEYRING_NAME = "offlineimap"<br />
attrs = { "repo": repo, "user": user }<br />
keyring = gkey.get_default_keyring_sync()<br />
gkey.item_create_sync(keyring, gkey.ITEM_NETWORK_PASSWORD,<br />
KEYRING_NAME, attrs, pw, True)<br />
<br />
def get_credentials(repo):<br />
keyring = gkey.get_default_keyring_sync()<br />
attrs = {"repo": repo}<br />
items = gkey.find_items_sync(gkey.ITEM_NETWORK_PASSWORD, attrs)<br />
return (items[0].attributes["user"], items[0].secret)<br />
<br />
def get_username(repo):<br />
return get_credentials(repo)[0]<br />
def get_password(repo):<br />
return get_credentials(repo)[1]<br />
<br />
if __name__ == "__main__":<br />
import sys<br />
import os<br />
import getpass<br />
if len(sys.argv) != 3:<br />
print "Usage: %s <repository> <username>" \<br />
% (os.path.basename(sys.argv[0]))<br />
sys.exit(0)<br />
repo, username = sys.argv[1:]<br />
password = getpass.getpass("Enter password for user '%s': " % username)<br />
password_confirmation = getpass.getpass("Confirm password: ")<br />
if password != password_confirmation:<br />
print "Error: password confirmation does not match"<br />
sys.exit(1)<br />
set_credentials(repo, username, password)<br />
</nowiki>}}<br />
<br />
To set the credentials, run this script from a shell.<br />
<br />
===== Option 2: using {{AUR|gnome-keyring-query}} tool =====<br />
<br />
{{hc|~/.offlineimap.py|<nowiki><br />
#! /usr/bin/env python2<br />
# executes gnome-keyring-query get passwd<br />
# and returns the output<br />
<br />
import locale<br />
from subprocess import Popen, PIPE<br />
<br />
encoding = locale.getdefaultlocale()[1]<br />
<br />
def get_password(p):<br />
(out, err) = Popen(["gnome-keyring-query", "get", p], stdout=PIPE).communicate()<br />
return out.decode(encoding).strip()<br />
</nowiki>}}<br />
<br />
==== python2-keyring ====<br />
<br />
There is a general solution that should work for any keyring. Install [http://pypi.python.org/pypi/keyring python2-keyring] from [[AUR]], then change your ~/.offlineimaprc to say something like:<br />
<br />
{{bc|<nowiki><br />
[general]<br />
pythonfile = /home/user/offlineimap.py<br />
...<br />
[Repository RemoteEmail]<br />
remoteuser = username@host.net<br />
remotepasseval = keyring.get_password("offlineimap","username@host.net")<br />
...<br />
</nowiki>}}<br />
<br />
and somewhere in ~/offlineimap.py add {{ic|import keyring}}. Now all you have to do is set your password, like so:<br />
<br />
{{bc|$ python2 <br />
>>> import keyring<br />
>>> keyring.set_password("offlineimap","username@host.net", "MYPASSWORD")}}<br />
<br />
and it will grab the password from your (kwallet/gnome-) keyring instead of having to keep it in plaintext or enter it each time.<br />
<br />
==== Emacs EasyPG ====<br />
<br />
See http://www.emacswiki.org/emacs/OfflineIMAP#toc2<br />
<br />
==== KeePass / KeePassX ====<br />
<br />
Install {{AUR|python2-keepass-git}} from the AUR, then add the following to your offlineimap.py file:<br />
<br />
{{bc|<nowiki><br />
#! /usr/bin/env python2<br />
import os, getpass<br />
from keepass import kpdb<br />
<br />
def get_keepass_pw(dbpath, title="", username=""):<br />
if os.path.isfile(dbpath):<br />
db = kpdb.Database(dbpath, getpass.getpass("Master password for '" + dbpath + "': "))<br />
for entry in db.entries:<br />
if (entry.title == title) and (entry.username == username):<br />
return entry.password<br />
else:<br />
print "Error: '" + dbpath + "' does not exist."<br />
return<br />
<br />
</nowiki>}}<br />
(Credit to aki--aki: https://gist.github.com/aki--aki/5180359)<br />
<br />
Next, edit your ~/.offlineimaprc:<br />
<br />
{{bc|<nowiki><br />
[general]<br />
# VVV Set this path correctly VVV<br />
pythonfile = /home/user/offlineimap.py<br />
...<br />
[Repository RemoteEmail]<br />
remoteuser = username@host.net<br />
# Set the DB path as well as the title and username of the specific entry you'd like to use.<br />
# This will prompt you on STDIN at runtime for the kdb master password.<br />
remotepasseval = get_keepass_pw("/path/to/database.kdb", title="<entry title>", username="<entry username>")<br />
...<br />
</nowiki>}}<br />
<br />
Note that as-is, this does not support KDBs with keyfiles, only KDBs with password-only auth.<br />
<br />
=== Kerberos authentication ===<br />
<br />
Install {{AUR|python2-kerberos}} from [[AUR]] and do not specify remotepass in your .offlineimaprc. <br />
OfflineImap figure out the reset all if have a valid Kerberos TGT. <br />
If you have 'maxconnections', it will fail for some connection. Comment 'maxconnections' out will solve this problem.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Overriding UI and autorefresh settings ===<br />
<br />
For the sake of troubleshooting, it is sometimes convenient to launch offlineimap with a more verbose UI, no background syncs and perhaps even a debug level:<br />
$ offlineimap [ -o ] [ -d <debug_type> ] [ -u <ui> ]<br />
;-o<br />
:Disable autorefresh, keepalive, etc.<br />
<br />
;-d <debug_type><br />
:Where ''<debug_type>'' is one of {{Ic|imap}}, {{Ic|maildir}} or {{Ic|thread}}. Debugging imap and maildir are, by far, the most useful.<br />
<br />
;-u <ui><br />
:Where ''<ui>'' is one of {{Ic|CURSES.BLINKENLIGHTS}}, {{Ic|TTY.TTYUI}}, {{Ic|NONINTERACTIVE.BASIC}}, {{Ic|NONINTERACTIVE.QUIET}} or {{Ic|MACHINE.MACHINEUI}}. TTY.TTYUI is sufficient for debugging purposes.<br />
<br />
{{Note|More recent versions use the following for <ui>: {{Ic|blinkenlights}}, {{Ic|ttyui}}, {{Ic|basic}}, {{Ic|quiet}} or {{Ic|machineui}}.}}<br />
<br />
=== Folder could not be created ===<br />
<br />
In version 6.5.3, offlineimap gained the ability to create folders in the remote repository, as described [http://comments.gmane.org/gmane.mail.imap.offlineimap.general/4784 here].<br />
<br />
This can lead to errors of the following form when using {{Ic|nametrans}} on the remote repository:<br />
ERROR: Creating folder bar on repository foo-remote<br />
Folder 'bar'[foo-remote] could not be created. Server responded: ('NO', ['[ALREADYEXISTS] Duplicate folder name bar (Failure)'])<br />
<br />
The solution is to provide an inverse {{Ic|nametrans}} lambda for the local repository, e.g.<br />
<br />
{{hc|~/.offlineimaprc|<nowiki><br />
[Repository foo-local]<br />
nametrans = lambda foldername: foldername.replace('bar', 'BAR')<br />
<br />
[Repository foo-remote]<br />
nametrans = lambda foldername: foldername.replace('BAR', 'bar')<br />
</nowiki>}}<br />
<br />
* For working out the correct inverse mapping. the output of {{Ic|offlineimap --info}} should help.<br />
* After updating the mapping, it may be necessary to remove all of the folders under {{Ic|$HOME/.offlineimap/}} for the affected accounts.<br />
<br />
=== SSL fingerprint does not match ===<br />
<br />
ERROR: Server SSL fingerprint 'keykeykey' for hostname 'example.com' does not match configured fingerprint. Please verify and set 'cert_fingerprint' accordingly if not set yet.<br />
<br />
To solve this, add to {{ic|~/.offlineimaprc}} (in the same section as {{ic|1=ssl = yes}}) one of the following:<br />
* either add {{ic|cert_fingerprint}}, with the certificate fingerprint of the remote server. This checks whether the remote server certificate matches the given fingerprint.<br />
cert_fingerprint = keykeykey<br />
* or add {{ic|sslcacertfile}} with the path to the system CA certificates file. Needs {{Pkg|ca-certificates}} installed. This validates the remote ssl certificate chain against the Certification Authorities in that file.<br />
sslcacertfile = /etc/ssl/certs/ca-certificates.crt<br />
<br />
== See also ==<br />
<br />
* [http://lists.alioth.debian.org/mailman/listinfo/offlineimap-project Official OfflineIMAP mailing list]<br />
* [http://roland.entierement.nu/blog/2010/09/08/gnus-dovecot-offlineimap-search-a-howto.html Gnus, Dovecot, OfflineIMAP, search: a HOWTO]<br />
* [http://pbrisbin.com/posts/mutt_gmail_offlineimap/ Mutt + Gmail + Offlineimap] - An outline of brisbin's simple gmail/mutt setup using cron to keep offlineimap syncing.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=373187Lenovo IdeaPad Yoga 2 Pro2015-05-10T10:28:58Z<p>Ilfugiuliopascal: /* ACPI */ improve the style</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Multitouch gestures===<br />
You need to install {{aur|Touchegg}} from the [[AUR]] in order to enable multitouch gestures. Optionally, you can install {{aur|touchegg-gce-git}} as a graphical front-end. See more details in the [[Touchegg|dedicated wiki page]].<br />
{{Tip| If you use [[Gnome Shell]] you should start {{ic|touchegg}} before it, in order to avoid conflicts.}}<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified {{ic|/etc/acpi/default.sh}} to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
<br />
<br />
If you have trouble detecting a display with the micro hdmi port, consider filing the plastic on the male hdmi plug back a bit (not on the laptop). See [https://forums.lenovo.com/t5/Lenovo-Edge-Yoga-Flex-Laptops/Yoga-2-Pro-micro-HDMi-issue-SOLVED/td-p/1297269 here]. The ruber case can prevent the plug from inserting fully.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [http://www.linlap.com/lenovo_ideapad_yoga_2_pro];<br />
* a good Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro by KeithCU with useful comments [http://keithcu.com/wordpress/?p=3270 ];<br />
* an installation guide written by Ubuntu users: [http://askubuntu.com/questions/367963/ubuntu-on-lenovo-yoga-2-pro ].</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=HiDPI&diff=373186HiDPI2015-05-10T10:17:42Z<p>Ilfugiuliopascal: add a vlc section</p>
<hr />
<div>[[Category:Graphics]]<br />
[[ja:HiDPI]]<br />
HiDPI (High Dots Per Inch) displays, also known by Apple's "[[wikipedia:Retina Display|Retina Display]]" marketing name, are screens with a high resolution in a relatively small format. They are mostly found in Apple products or high-end "ultrabooks", as well as in 4K (Ultra HD) or even 5K monitors.<br />
<br />
Not all software behaves well in high-resolution mode yet. Here are listed most common tweaks which make work on a HiDPI screen more pleasant.<br />
<br />
== Desktop environments ==<br />
<br />
=== GNOME ===<br />
<br />
To enable HiDPI, use gsettings:<br />
<br />
gsettings set org.gnome.desktop.interface scaling-factor 2<br />
<br />
=== KDE ===<br />
<br />
{{Out of date|Needs to be updated for KDE 5.}}<br />
KDE still has its share of HiDPI [https://community.kde.org/KDE/High-dpi_issues issues] but HiDPI support can be improved by changing the below settings:<br />
<br />
# Increase font dpi (System Settings → Application Appearance → Fonts → Force font dpi, enter a number such as 125, 144 or 150 etc)<br />
# Increase icon sizes (System Settings → Application Appearance → Icons → Advanced, here choose a higher icon size for all icons, eg. just increase each icon type by one step) <br />
<br />
=== Xfce ===<br />
<br />
Go to Settings Editor (you can find it in Settings Manager), and change the DPI parameter in {{ic|xsettings}} → {{ic|Xft}}. The value of 180 seems to work well on Retina screens.<br />
<br />
To enlarge icons in system tray, right-click on it (aim for empty space / top pixels / bottom pixels, so that you will not activate icons themselves) → “Properties” → set “Maximum icon size” to 32, 48 or 64.<br />
<br />
=== Cinnamon ===<br />
<br />
Supports HiDPI since 2.2. Even without rebuilding GTK3, the support is pretty good (e.g. window borders are correctly sized, which is not the case under Xfce).<br />
<br />
=== Enlightenment ===<br />
<br />
For E18, go to the E Setting panel. In Look → Scaling, you can control the UI scaling ratios. A ratio of 1.2 seems to work well for the native resolution of the MBPr 15" screen.<br />
<br />
== X Server ==<br />
<br />
Some programs use the physical width to detect the DPI. Examples are i3 ([https://github.com/i3/i3/blob/next/libi3/dpi.c source]) and Chromium ([https://code.google.com/p/chromium/codesearch#chromium/src/ui/views/widget/desktop_aura/desktop_screen_x11.cc source]).<br />
<br />
To verify that the X Server has properly detected the physical dimensions of your monitor, run:<br />
<br />
$ xdpyinfo | grep -B 2 resolution<br />
screen #0:<br />
dimensions: 3200x1800 pixels (423x238 millimeters)<br />
resolution: 192x192 dots per inch<br />
<br />
This examples uses inaccurate dimensions (423mm x 328mm, even though the Dell XPS 9530 has 346mm x 194mm) to have a clean multiple of 96 dpi, in this case 192 dpi. This tends to work better than using the correct DPI — Pango renders fonts crisper in i3 for example.<br />
<br />
If the DPI displayed by xdpyinfo is not correct, see [[Xorg#Display_size_and_DPI]] for how to fix it.<br />
<br />
== X Resources ==<br />
<br />
If you are not using a desktop environment such as GNOME, KDE, Xfce, or other that manipulates the X settings for you, you can set the desired Xft DPI setting manually in {{ic|~/.Xresources}}:<br />
<br />
{{hc|~/.Xresources|<nowiki><br />
Xft.dpi: 180<br />
Xft.autohint: 0<br />
Xft.lcdfilter: lcddefault<br />
Xft.hintstyle: hintfull<br />
Xft.hinting: 1<br />
Xft.antialias: 1<br />
Xft.rgba: rgb<br />
</nowiki>}}<br />
<br />
Make sure the settings are loaded properly when X starts, for instance in your {{ic|~/.xinitrc`}} with {{ic|xrdb -merge ~/.Xresources}} (see [[Xresources]] for more information).<br />
<br />
This will make the font render properly in most toolkits and applications, it will however not affect things such as icon size!<br />
<br />
== Browsers ==<br />
<br />
=== Firefox ===<br />
<br />
Open Firefox advanced preferences page ({{ic|about:config}}) and set parameter {{ic|layout.css.devPixelsPerPx}} to {{ic|2}} (or find the one that suits you better; {{ic|2}} is a good choice for Retina screens).<br />
<br />
If you use a HiDPI monitor such as Retina display together with another monitor, you can use [https://addons.mozilla.org/en-US/firefox/addon/autohidpi/ AutoHiDPI] add-on in order to automatically adjust {{ic|layout.css.devPixelsPerPx}} setting for the active screen.<br />
<br />
From Firefox version 38 onwards, your system (GTK+ 3.10) settings should be taken into account.[https://bugzilla.mozilla.org/show_bug.cgi?id=975919]<br />
<br />
=== Chromium / Google Chrome ===<br />
<br />
HiDPI support in Chromium is available through {{AUR|chromium-dev}} by setting {{ic|1=_use_hidpi=1}} in the [[PKGBUILD]]. [https://code.google.com/p/chromium/issues/detail?id=143619 HiDPI support] was only [https://chromium.googlesource.com/chromium/src.git/+/b19dc5bf24871e40e986f0f024946b1c281e77c4 recently added], so it will take some time to become available in {{Pkg|chromium}}. In the meantime try setting default page zoom level to 200% (although it is not the most elegant solution).<br />
<br />
Full HiDPI support in Chrome is available through {{AUR| google-chrome-dev}} as of version 43.0.2357.2-1 and works out of the box as tested with Gnome. Additionally, using older Chrome packages from AUR, and possibly chromium packages as well (not tested) the browser can be launched with the command line flag {{ic|--force-device-scale-factor}} and a scaling value. This will scale all content and ui, including tab and font size. For example:<br />
<br />
{{bc|1=google-chrome --force-device-scale-factor=2}}<br />
<br />
Using this option, a scaling factor of 1 would be normal scaling. Floating point values can be used.<br />
<br />
=== Opera ===<br />
<br />
Since version 24 one can alter Opera's DPI by starting it with the {{ic|1=--alt-high-dpi-setting=X}} command line option, where X is the desired DPI. For example, with {{ic|1=--alt-high-dpi-setting=144}} Opera will assume that DPI is 144. Newer versions of opera will auto detect the DPI using the font DPI setting (in KDE: the force font DPI setting.)<br />
<br />
Generally speaking, Opera's HiDPI support is excellent. Since it is also built using Chrome's blink renderer, and has an extension which runs most Chrome extensions, it's a very viable alternative to Chrome with much better HiDPI support.<br />
<br />
== Mail clients ==<br />
<br />
=== Thunderbird ===<br />
<br />
See [[#Firefox]]. To access {{ic|about:config}}, go to Edit → Preferences → Advanced → Config editor.<br />
<br />
== Skype ==<br />
<br />
Skype is a Qt program, and needs to be configured separately. You cannot change the DPI setting for it, but at least you can change font size. Install {{Pkg|qt4}} and run {{ic|qtconfig-qt4}} to do it.<br />
<br />
== IntelliJ IDEA ==<br />
<br />
If HiDPI support does not work, you have to add {{ic|1=-Dhidpi=true}} to your vmoptions file.[https://youtrack.jetbrains.com/issue/IDEA-114944]<br />
/usr/share/intellij-idea-ultimate-edition/bin/idea.vmoptions<br />
/usr/share/intellij-idea-ultimate-edition/bin/idea64.vmoptions<br />
<br />
== NetBeans ==<br />
<br />
NetBeans allows the font size of its interface to be controlled using the {{ic|1=--fontsize}} parameter during startup. To make this change permanent edit the {{ic|1=/usr/share/netbeans/etc/netbeans.conf}} file and append the {{ic|1=--fontsize}} parameter to the {{ic|1=netbeans_default_options}} property.[http://wiki.netbeans.org/FaqFontSize]<br />
<br />
The editor fontsize can be controlled from Tools → Option → Fonts & Colors.<br />
<br />
The output window fontsize can be controlled from Tools → Options → Miscelaneous → Output<br />
<br />
== Gimp 2.8 ==<br />
<br />
Use a high DPI theme, or [http://gimpforums.com/thread-increase-all-icons-on-hidpi-screen?pid=39113#pid39113 adjust] {{ic|1=gtkrc}} of an existing theme. For example set {{ic|1=GimpToolPalette::tool-icon-size}} to {{ic|1=dialog}}.<br />
<br />
== VLC ==<br />
<br />
The git vit version {{AUR|vlc-git}} on the AUR seems to solve some of the problems.<br />
<br />
== Other / Older applications ==<br />
<br />
One approach is to run the application full screen and without decoration in its own VNC desktop. Then scale the viewer. With Vncdesk ({{AUR|vncdesk-git}} from the [[AUR]]) you can set up a desktop per application, then start server and client with a simple command such as {{ic|vncdesk 2}}.<br />
<br />
[[x11vnc]] has an experimental option {{ic|-appshare}}, which opens one viewer per application window. Perhaps something could be hacked up with that.<br />
<br />
== GUI Toolkits ==<br />
<br />
=== Qt 5 ===<br />
<br />
Qt5 applications can often be run at higher dpi by setting the QT_DEVICE_PIXEL_RATIO environment variable. Note that the variable has to be set to a whole integer, so setting it to 1.5 will not work.<br />
<br />
This can for instance be enabled by creating a file {{ic|/etc/profile.d/qt-hidpi.sh}}<br />
<br />
export QT_DEVICE_PIXEL_RATIO=2<br />
<br />
And set the executable bit on it.<br />
<br />
=== GDK 3 (GTK+ 3) ===<br />
<br />
To scale UI elements by a factor of two:<br />
<br />
export GDK_SCALE=2<br />
<br />
To undo scaling of text:<br />
<br />
export GDK_DPI_SCALE=0.5<br />
<br />
== External displays ==<br />
The HiDPI setting is desktop-wide so that non-HiDPI external displays show everything too large. One workaround is to using [[xrandr]]'s scale option. To have a non-HiDPI monitor (on DP1) right of an internal HiDPI display (eDP1), one could run:<br />
<br />
xrandr --output eDP1 --auto --output DP1 --auto --scale 2x2 --right-of eDP1<br />
<br />
When extending above the internal display, you may see part of the internal display on the external monitor. In that case, specify the position manually, e.g. using [https://gist.github.com/wvengen/178642bbc8236c1bdb67 this script].<br />
<br />
You may run into problems with your mouse not being able to reach the whole screen. That's a [https://bugs.freedesktop.org/show_bug.cgi?id=39949 known bug] with an xserver-org patch (or try the panning option, but that might cause other problems).<br />
<br />
An example of the panning syntax for a 4k laptop with an external 1920x1080 monitor to the right:<br />
<br />
xrandr --output eDP1 --auto --output HDMI1 --auto --panning 3840x2160+3840+0 --scale 2x2 --right-of eDP1<br />
<br />
Generically if your hidpi monitor is AxB pixels and your regular monitor is CxD and you are scaling by [ExF], the commandline for right-of is:<br />
<br />
xrandr --output eDP1 --auto --output HDMI1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP1<br />
<br />
== Console ==<br />
<br />
The default console font will be very small on hidpi displays, the largest font is {{ic|sun12x22}}, to enable it (temporarily):<br />
<br />
$ setfont sun12x22<br />
<br />
See [[Fonts#Console_fonts]] for more.<br />
<br />
== See also ==<br />
<br />
* [http://www.phoronix.com/scan.php?page=article&item=linux_uhd4k_gpus Ultra HD 4K Linux Graphics Card Testing] (Nov 2013)<br />
* [[Font_configuration]]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=ArchWiki_talk:Reports&diff=372709ArchWiki talk:Reports2015-05-05T19:12:50Z<p>Ilfugiuliopascal: /* Deletion */ I skipped a :</p>
<hr />
<div>In this page you can list:<br />
* Edits that a contributor made to the wiki without a proper explanation (that is what the Summary field is for) and whose validity you lack the knowledge to judge by yourself. In this case, please add a link to the edit in question with a brief explanation why you think it should be investigated. Consider contacting the contributor to ask for an explanation, which is often an effective way to solve these issues. Please report the eventual answer (if any) below the initial report. You can also link to a discussion already started in the talk page of the edited article.<br />
* Links to discussions started in talk pages requesting to add, delete, or modify some content in the respective articles which you do not have sufficient knowledge to answer definitively by yourself.<br />
<br />
Please sign your edits and feel free to comment on others' reports. Discussions will be deleted 3 days after closing.<br />
<br />
See [[ArchWiki:Spam]] to report vandalism.<br />
<br />
__TOC__<br />
<br />
== Webex ==<br />
<br />
''Moved from Reports''<br />
<br />
Diff: [https://wiki.archlinux.org/index.php?title=Special%3ALog&type=delete&user=&page=webex&year=&month=-1 Webex]<br />
Timestamp: 2015-05-05&nbsp;15:55:55<br />
Type: content<br />
Comment: Article deleted erroneously, while reply to discussion was pending.[https://wiki.archlinux.org/index.php/User:Indigo/Sandbox#Webex] [https://wiki.archlinux.org/index.php/User_talk:Anna]<br />
<br />
In an edit-conflict, the article was deleted while the discussion to delete or not was not finalized. The discussion is reproduced below to finalize now. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 15:24, 5 May 2015 (UTC)<br />
<br />
=== Deletion ===<br />
I think this page is useful and should not be deleted. It gives you help to configure your arch machine to use an online service difficult to configure.<br />
[[User:Ilfugiuliopascal|Ilfugiuliopascal]] ([[User talk:Ilfugiuliopascal|talk]]) 20:13, 4 May 2015 (UTC)<br />
<br />
:Create an AUR package if you think it's useful. This sort of info doesn't belong on the wiki. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 07:50, 5 May 2015 (UTC)<br />
<br />
::Reopening. I agree with Ilfugiuliopascal. Of course it would be helpful, if there was an AUR package for this. Still, even with one I would appreciate these instructions, because (a) there is no "webex" package (webex.com does not officially support linux and the webclient you download when using the service may change without notice. Even if there was an official download, I would prefer the usual way to let it install in the home directory of the user rather than to /usr) (b) the package would have many AUR dependencies (i.e. no easy "makepkg -s"), (c) it is very difficult to package anyway so that it works for different user setups.<br />
::The existing instructions could be improved, e.g. by adding the way to return to the previous (64-bit) Java default environment. But generally they show a way to run 32-bit Java which could be useful for others and maybe also linked from [[Java#Tips_and_tricks]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 15:24, 5 May 2015 (UTC)<br />
<br />
:::The idea was that the page only included a link to the website, and then went on how to use ldd to find dependencies (for a page created last year). Sure, there's no easy makepkg command, but having a PKGBUILD with the correct dependencies is still far easier than manually clicking package links on a website.<br />
:::Do mind that it would probably be hard to package software like this in a system path, so the PKGBUILD would as said, help with dependencies and echo necessary instructions to the user. See [[User_talk:Anna]] for an example I've mentioned to the original article author.<br />
:::32bit java instructions are probably general enough to describe (and keep in one place) in the [[Java]] article. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:55, 5 May 2015 (UTC)<br />
<br />
::::I agree with Indigo. I don't like how you deleted the page without giving a proper explanation and without waiting enough time for replies in the discussion page. I don't understand why there can be a Skype page and not a Webex one. You can do everything with a PKGBUILD, but there are more ways to configure this application depending on needs and preferences. And if creating a PKGBUILD should have been the right choice you could at least have waited for its creation. At the moment we don't have a wiki page neither a PKGBUILD. [[User:Ilfugiuliopascal|Ilfugiuliopascal]] ([[User talk:Ilfugiuliopascal|talk]]) 19:12, 5 May 2015 (UTC)</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=ArchWiki_talk:Reports&diff=372708ArchWiki talk:Reports2015-05-05T19:12:20Z<p>Ilfugiuliopascal: Complaint about deletion</p>
<hr />
<div>In this page you can list:<br />
* Edits that a contributor made to the wiki without a proper explanation (that is what the Summary field is for) and whose validity you lack the knowledge to judge by yourself. In this case, please add a link to the edit in question with a brief explanation why you think it should be investigated. Consider contacting the contributor to ask for an explanation, which is often an effective way to solve these issues. Please report the eventual answer (if any) below the initial report. You can also link to a discussion already started in the talk page of the edited article.<br />
* Links to discussions started in talk pages requesting to add, delete, or modify some content in the respective articles which you do not have sufficient knowledge to answer definitively by yourself.<br />
<br />
Please sign your edits and feel free to comment on others' reports. Discussions will be deleted 3 days after closing.<br />
<br />
See [[ArchWiki:Spam]] to report vandalism.<br />
<br />
__TOC__<br />
<br />
== Webex ==<br />
<br />
''Moved from Reports''<br />
<br />
Diff: [https://wiki.archlinux.org/index.php?title=Special%3ALog&type=delete&user=&page=webex&year=&month=-1 Webex]<br />
Timestamp: 2015-05-05&nbsp;15:55:55<br />
Type: content<br />
Comment: Article deleted erroneously, while reply to discussion was pending.[https://wiki.archlinux.org/index.php/User:Indigo/Sandbox#Webex] [https://wiki.archlinux.org/index.php/User_talk:Anna]<br />
<br />
In an edit-conflict, the article was deleted while the discussion to delete or not was not finalized. The discussion is reproduced below to finalize now. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 15:24, 5 May 2015 (UTC)<br />
<br />
=== Deletion ===<br />
I think this page is useful and should not be deleted. It gives you help to configure your arch machine to use an online service difficult to configure.<br />
[[User:Ilfugiuliopascal|Ilfugiuliopascal]] ([[User talk:Ilfugiuliopascal|talk]]) 20:13, 4 May 2015 (UTC)<br />
<br />
:Create an AUR package if you think it's useful. This sort of info doesn't belong on the wiki. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 07:50, 5 May 2015 (UTC)<br />
<br />
::Reopening. I agree with Ilfugiuliopascal. Of course it would be helpful, if there was an AUR package for this. Still, even with one I would appreciate these instructions, because (a) there is no "webex" package (webex.com does not officially support linux and the webclient you download when using the service may change without notice. Even if there was an official download, I would prefer the usual way to let it install in the home directory of the user rather than to /usr) (b) the package would have many AUR dependencies (i.e. no easy "makepkg -s"), (c) it is very difficult to package anyway so that it works for different user setups.<br />
::The existing instructions could be improved, e.g. by adding the way to return to the previous (64-bit) Java default environment. But generally they show a way to run 32-bit Java which could be useful for others and maybe also linked from [[Java#Tips_and_tricks]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 15:24, 5 May 2015 (UTC)<br />
<br />
:::The idea was that the page only included a link to the website, and then went on how to use ldd to find dependencies (for a page created last year). Sure, there's no easy makepkg command, but having a PKGBUILD with the correct dependencies is still far easier than manually clicking package links on a website.<br />
:::Do mind that it would probably be hard to package software like this in a system path, so the PKGBUILD would as said, help with dependencies and echo necessary instructions to the user. See [[User_talk:Anna]] for an example I've mentioned to the original article author.<br />
:::32bit java instructions are probably general enough to describe (and keep in one place) in the [[Java]] article. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:55, 5 May 2015 (UTC)<br />
<br />
:::I agree with Indigo. I don't like how you deleted the page without giving a proper explanation and without waiting enough time for replies in the discussion page. I don't understand why there can be a Skype page and not a Webex one. You can do everything with a PKGBUILD, but there are more ways to configure this application depending on needs and preferences. And if creating a PKGBUILD should have been the right choice you could at least have waited for its creation. At the moment we don't have a wiki page neither a PKGBUILD. [[User:Ilfugiuliopascal|Ilfugiuliopascal]] ([[User talk:Ilfugiuliopascal|talk]]) 19:12, 5 May 2015 (UTC)</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Webex&diff=372579Webex2015-05-04T20:57:21Z<p>Ilfugiuliopascal: java-8-jdk-32 path changed</p>
<hr />
<div>[[Category:Networking]]<br />
{{Delete|Should be on AUR with additional instructions in the PKGBUILD}}<br />
Webex is an online meeting and conferencing tool used by many businesses. Webex should work out of the box on 32-bit systems with a recent version of Java installed, but extra configuration is needed on 64-bit systems.<br />
<br />
== Setup ==<br />
You will first need both the java JRE as well as the browser plugin that lets you run java in the browser<br />
$ pacman -S jre8-openjdk icedtea-web<br />
<br />
Webex is built for 32-bit Java, so install {{Pkg|lib32-glibc}} from the [[official repositories]] and {{AUR|bin32-jdk}} {{AUR|java32-runtime-common}} {{AUR|java32-environment-common}} from the [[AUR]] and set your default JRE to java-8-jdk-32.<br />
<br />
# ln -s /usr/lib32/jvm/java32-8-jdk /lib/jvm/<br />
# archlinux-java set java-8-jdk-32<br />
<br />
Point your browser to http://www.webex.com/test-meeting.html and start the test meeting. This will create a directory in {{ic|$HOME/.webex/}} containing extra libraries needed by the Webex application.<br />
<br />
Now use ''ldd'' to find the needed 32-bit packages for these extra libraries:<br />
<br />
$ cd $HOME/.webex/1524/<br />
$ ldd *.so | grep not | sort | uniq<br />
<br />
This will tell you what extra packages need to be installed:<br />
libX11.so.6 => not found<br />
libXext.so.6 => not found<br />
libXft.so.2 => not found<br />
libXi.so.6 => not found<br />
libXmu.so.6 => not found<br />
libXrender.so.1 => not found<br />
libXt.so.6 => not found<br />
libXtst.so.6 => not found<br />
libXv.so.1 => not found<br />
libasound.so.2 => not found<br />
libfontconfig.so.1 => not found<br />
libfreetype.so.6 => not found<br />
libgcc_s.so.1 => not found<br />
libgdk-x11-2.0.so.0 => not found<br />
libglib-2.0.so.0 => not found<br />
libgmodule-2.0.so.0 => not found<br />
libgobject-2.0.so.0 => not found<br />
libgtk-x11-2.0.so.0 => not found<br />
libjawt.so => not found<br />
libpango-1.0.so.0 => not found<br />
libpangoft2-1.0.so.0 => not found<br />
libpangox-1.0.so.0 => not found<br />
libpangoxft-1.0.so.0 => not found<br />
libpng12.so.0 => not found<br />
libstdc++.so.6 => not found<br />
libuuid.so.1 => not found<br />
libz.so.1 => not found<br />
<br />
Install {{Pkg|lib32-libx11}} {{Pkg|lib32-gtk2}} {{Pkg|lib32-alsa-lib}} {{Pkg|lib32-libxv}} {{Pkg|lib32-libxt}} {{Pkg|lib32-libxmu}} {{Pkg|lib32-libxtst}} from the [[official repositories]] and {{AUR|lib32-pangox-compat}} and {{AUR|lib32-libpng12}} from the [[AUR]].<br />
<br />
Webex should work after this. ''ldd'' still complains that libjawt.so cannot be found, but this does not seem to affect anything.<br />
<br />
== Chromium ==<br />
<br />
Chrome dropped support for NPAPI plugins with version 35, so Webex will not work until the Java plugin is updated to NaCl.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362333Arduino2015-02-22T12:25:03Z<p>Ilfugiuliopascal: /* Ino */ improve the style</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in {{ic|/dev/tts/}} owned by group {{ic|uucp}} so adding the user to the {{ic|uucp}} group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as {{ic|/dev/ttyACMx}} so if the above doesn't work try adding the user to the group {{ic|tty}}:<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that {{ic|Ino}} looks for the file {{ic|avrdude.conf}} in {{ic|/etc/avrdude/avrdude.conf}}, while [[pacman]] appears to place this file (upon installation of {{pkg|avrdude}}) in {{ic|/etc/avrdude.conf}}. In {{ic|Ino}} gives you troubles create the directory {{ic|/etc/avrdude}} and make the symlink:<br />
ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}}<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to {{ic|make && make upload}} to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{pkg|python-pyserial}} and {{pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
===Emacs===<br />
<br />
It is possible to configure [[Emacs]] as IDE.<br />
<br />
Install the package {{aur|emacs-arduino-mode-git}} from the [[AUR]] in order to enable the {{ic|arduino-mode}} in emacs.<br />
<br />
Add to the init script:<br />
{{hc|~/.emacs|<br />
;; arduino-mode<br />
(require 'cl)<br />
(autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t)<br />
(add-to-list 'auto-mode-alist '("\.ino$" . arduino-mode))}}<br />
<br />
You can compile and upload the sketches using {{ic|Arduino-mk}} (see above) with {{ic|M-x compile}} {{ic|make upload}}.<br />
<br />
Main resource: [http://www.emacswiki.org/emacs/ArduinoSupport here].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in {{ic|/var/lock/lockdev}}, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file {{ic|/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o}} does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder {{ic|./hardware/tools/avr}} in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the {{ic|/usr/share/arduino/hardware/tools/avr}} directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362332Arduino2015-02-22T12:22:19Z<p>Ilfugiuliopascal: /* Accessing serial */ add some ic templates</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in {{ic|/dev/tts/}} owned by group {{ic|uucp}} so adding the user to the {{ic|uucp}} group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as {{ic|/dev/ttyACMx}} so if the above doesn't work try adding the user to the group {{ic|tty}}:<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that Ino looks for the file {{ic|avrdude.conf}} in {{ic|/etc/avrdude/avrdude.conf}}, while pacman appears to place this file (upon installation of {{pkg|avrdude}}) in {{ic|/etc/avrdude.conf}}. Create the directory {{ic|/etc/avrdude}} and make a symlink {{ic|ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf}} if ino gives you troubles.<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}}<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to {{ic|make && make upload}} to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{pkg|python-pyserial}} and {{pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
===Emacs===<br />
<br />
It is possible to configure [[Emacs]] as IDE.<br />
<br />
Install the package {{aur|emacs-arduino-mode-git}} from the [[AUR]] in order to enable the {{ic|arduino-mode}} in emacs.<br />
<br />
Add to the init script:<br />
{{hc|~/.emacs|<br />
;; arduino-mode<br />
(require 'cl)<br />
(autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t)<br />
(add-to-list 'auto-mode-alist '("\.ino$" . arduino-mode))}}<br />
<br />
You can compile and upload the sketches using {{ic|Arduino-mk}} (see above) with {{ic|M-x compile}} {{ic|make upload}}.<br />
<br />
Main resource: [http://www.emacswiki.org/emacs/ArduinoSupport here].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in {{ic|/var/lock/lockdev}}, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file {{ic|/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o}} does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder {{ic|./hardware/tools/avr}} in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the {{ic|/usr/share/arduino/hardware/tools/avr}} directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362064Arduino2015-02-20T15:39:54Z<p>Ilfugiuliopascal: /* Emacs */</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in /dev/tts/ owned by group uucp so adding the user to the uucp group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as /dev/ttyACMx so if the above doesn't work try adding the user to the group tty<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that Ino looks for the file {{ic|avrdude.conf}} in {{ic|/etc/avrdude/avrdude.conf}}, while pacman appears to place this file (upon installation of {{pkg|avrdude}}) in {{ic|/etc/avrdude.conf}}. Create the directory {{ic|/etc/avrdude}} and make a symlink {{ic|ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf}} if ino gives you troubles.<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}}<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to {{ic|make && make upload}} to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{pkg|python-pyserial}} and {{pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
===Emacs===<br />
<br />
It is possible to configure [[Emacs]] as IDE.<br />
<br />
Install the package {{aur|emacs-arduino-mode-git}} from the [[AUR]] in order to enable the {{ic|arduino-mode}} in emacs.<br />
<br />
Add to the init script:<br />
{{hc|~/.emacs|<br />
;; arduino-mode<br />
(require 'cl)<br />
(autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t)<br />
(add-to-list 'auto-mode-alist '("\.ino$" . arduino-mode))}}<br />
<br />
You can compile and upload the sketches using {{ic|Arduino-mk}} (see above) with {{ic|M-x compile}} {{ic|make upload}}.<br />
<br />
Main resource: [http://www.emacswiki.org/emacs/ArduinoSupport here].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in {{ic|/var/lock/lockdev}}, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file {{ic|/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o}} does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder {{ic|./hardware/tools/avr}} in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the {{ic|/usr/share/arduino/hardware/tools/avr}} directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362063Arduino2015-02-20T15:39:30Z<p>Ilfugiuliopascal: /* Emacs */ .emacs lines</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in /dev/tts/ owned by group uucp so adding the user to the uucp group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as /dev/ttyACMx so if the above doesn't work try adding the user to the group tty<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that Ino looks for the file {{ic|avrdude.conf}} in {{ic|/etc/avrdude/avrdude.conf}}, while pacman appears to place this file (upon installation of {{pkg|avrdude}}) in {{ic|/etc/avrdude.conf}}. Create the directory {{ic|/etc/avrdude}} and make a symlink {{ic|ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf}} if ino gives you troubles.<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}}<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to {{ic|make && make upload}} to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{pkg|python-pyserial}} and {{pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
===Emacs===<br />
<br />
It is possible to configure [[Emacs]] as IDE.<br />
<br />
Install the package {{aur|emacs-arduino-mode-git}} from the [[AUR]] in order to enable the {{ic|arduino-mode}} in emacs.<br />
<br />
Add to the init script:<br />
{{hc|~/.emacs|<br />
;; arduino-mode<br />
(require 'cl)<br />
(autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t)<br />
(add-to-list 'auto-mode-alist '("\.ino$" . arduino-mode))}}<br />
<br />
<br />
You can compile and upload the sketches using {{ic|Arduino-mk}} (see above) with {{ic|M-x compile}} {{ic|make upload}}.<br />
<br />
Main resource: [http://www.emacswiki.org/emacs/ArduinoSupport here].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in {{ic|/var/lock/lockdev}}, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file {{ic|/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o}} does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder {{ic|./hardware/tools/avr}} in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the {{ic|/usr/share/arduino/hardware/tools/avr}} directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362062Arduino2015-02-20T15:30:57Z<p>Ilfugiuliopascal: /* Alternatives for IDE */ Add Emacs section</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in /dev/tts/ owned by group uucp so adding the user to the uucp group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as /dev/ttyACMx so if the above doesn't work try adding the user to the group tty<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that Ino looks for the file {{ic|avrdude.conf}} in {{ic|/etc/avrdude/avrdude.conf}}, while pacman appears to place this file (upon installation of {{pkg|avrdude}}) in {{ic|/etc/avrdude.conf}}. Create the directory {{ic|/etc/avrdude}} and make a symlink {{ic|ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf}} if ino gives you troubles.<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}}<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to {{ic|make && make upload}} to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{pkg|python-pyserial}} and {{pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
===Emacs===<br />
<br />
It is possible to configure [[Emacs]] as IDE.<br />
<br />
Install the package {{aur|emacs-arduino-mode-git}} from the [[AUR]] in order to enable the {{ic|arduino-mode}} in emacs.<br />
<br />
You can compile and upload the sketches using {{ic|Arduino-mk}} (see above) with {{ic|M-x compile}} {{ic|make upload}}.<br />
<br />
Main resource: [http://www.emacswiki.org/emacs/ArduinoSupport here].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in {{ic|/var/lock/lockdev}}, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file {{ic|/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o}} does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder {{ic|./hardware/tools/avr}} in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the {{ic|/usr/share/arduino/hardware/tools/avr}} directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362060Arduino2015-02-20T15:21:59Z<p>Ilfugiuliopascal: Apply some ic templates to files and names</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in /dev/tts/ owned by group uucp so adding the user to the uucp group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as /dev/ttyACMx so if the above doesn't work try adding the user to the group tty<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that Ino looks for the file {{ic|avrdude.conf}} in {{ic|/etc/avrdude/avrdude.conf}}, while pacman appears to place this file (upon installation of {{pkg|avrdude}}) in {{ic|/etc/avrdude.conf}}. Create the directory {{ic|/etc/avrdude}} and make a symlink {{ic|ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf}} if ino gives you troubles.<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}}<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to {{ic|make && make upload}} to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{pkg|python-pyserial}} and {{pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in {{ic|/var/lock/lockdev}}, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file {{ic|/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o}} does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder {{ic|./hardware/tools/avr}} in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the {{ic|/usr/share/arduino/hardware/tools/avr}} directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Arduino&diff=362058Arduino2015-02-20T15:11:34Z<p>Ilfugiuliopascal: /* Arduino-mk */ Add some required dependencies</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mathematics and science]]<br />
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. More information is available on the [http://www.arduino.cc/ Arduino HomePage].<br />
<br />
== Installation ==<br />
<br />
* Install {{AUR|arduino}} from the [[AUR]].<br />
* Add yourself to the {{ic|uucp}} and {{ic|lock}} [[Users and groups|groups]]. (More information in the next section: "Accessing serial")<br />
* You may need to load the cdc_acm module.<br />
# modprobe cdc_acm<br />
<br />
* Can be built on a Raspberry Pi by adding 'armv6h' to the arch=('i686' 'x86_64') line like so arch=('i686' 'x86_64' 'armv6h') in the PKGBUILD<br />
<br />
<br />
=== Arduino Due / Yun ===<br />
<br />
The [http://arduino.cc/en/Main/arduinoBoardDue Arduino Due] and the [http://arduino.cc/en/Main/ArduinoBoardYun Arduino Yun] need a newer version of the Arduino IDE. You can obtain it form [[AUR]] by installing {{AUR|arduino-beta}}.<br />
<br />
=== Pinoccio Scout ===<br />
<br />
[https://pinocc.io/ Pinoccio Scouts] can also be programmed using the Arduino IDE. Instructions can be found [https://pinocc.io/solo here].<br />
Alternative you can install {{AUR|arduino-pinoccio}} for the [[AUR]].<br />
<br />
=== Intel Galileo ===<br />
<br />
The version of the Arduino IDE that supports the [http://arduino.cc/en/ArduinoCertified/IntelGalileo Intel Galileo] board can be downloaded [https://communities.intel.com/community/makers/software/drivers here].<br />
<br />
=== On Arm7 devices ===<br />
<br />
See [http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html here] for a work around.<br />
<br />
== Configuration ==<br />
<br />
=== Accessing serial ===<br />
<br />
The arduino board communicates with the computer via a serial connection or a serial over USB connection. So the user needs read/write access to the serial device file. [[Udev]] creates files in /dev/tts/ owned by group uucp so adding the user to the uucp group gives the required read/write access.<br />
<br />
gpasswd -a $USER uucp<br />
gpasswd -a $USER lock<br />
{{Note|You will have to logout and login again for this to take effect.}}<br />
<br />
The arduino board appears as /dev/ttyACMx so if the above doesn't work try adding the user to the group tty<br />
<br />
gpasswd -a $USER tty<br />
<br />
Before uploading to the Arduino, be sure to set the correct serial port, board, and processor from the Tools menu.<br />
<br />
== stty ==<br />
<br />
Preparing:<br />
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts<br />
<br />
Sending commands through Terminal without new line after command<br />
# echo -n "Hello World" > /dev/ttyACM0<br />
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}<br />
<br />
Reading what your Arduino has to tell you<br />
$ cat /dev/ttyACM0<br />
<br />
== Alternatives for IDE ==<br />
<br />
=== ArduIDE ===<br />
<br />
ArduIDE is a Qt-based IDE for Arduino. {{AUR|arduide-git}} is available in the [[AUR]].<br />
<br />
If you prefer working from terminal, below there are some other options to choose from.<br />
<br />
=== Arduino-CMake ===<br />
<br />
Using [https://github.com/queezythegreat/arduino-cmake arduino-cmake] and [http://www.cmake.org/cmake/resources/software.html CMake] you can build Arduino firmware from the command line using multiple build systems. CMake lets you generate the build system that fits your needs, using the tools you like. It can generate any type of build system, from simple Makefiles, to complete projects for Eclipse, Visual Studio, XCode, etc.<br />
<br />
Requirements:<br />
* [https://www.archlinux.org/packages/?sort=&q=cmake CMake]<br />
* [https://aur.archlinux.org/packages.php?ID=8388 Arduino SDK]<br />
* [https://www.archlinux.org/packages/?sort=&q=gcc-avr gcc-avr]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-binutils avr-binutils]<br />
* [https://www.archlinux.org/packages/?sort=&q=avr-libc avr-libc]<br />
* [https://www.archlinux.org/packages/?sort=&q=avrdude avrdude]<br />
<br />
=== gnoduino ===<br />
<br />
{{AUR|gnoduino}} is an implementation of original Arduino IDE for GNOME available in the [[AUR]]. The original Arduino IDE software is written in Java. This is a Python implementation and it is targeted at GNOME but will work on xfce4 and other WM. Its purpose is to be light, while maintaining compatibility with the original Arduino IDE. The source editor is based on gtksourceview.<br />
<br />
=== Ino ===<br />
<br />
[https://github.com/amperka/ino Ino] is a command line toolkit for working with arduino hardware. {{AUR|ino}} is available in the [[AUR]].<br />
<br />
Note that Ino looks for the file avrdude.conf in /etc/avrdude/avrdude.conf, while pacman appears to place this file (upon installation of avrdude) in /etc/avrdude.conf. Create the directory /etc/avrdude and make a symlink ( ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf ) if ino gives you troubles.<br />
<br />
=== Makefile ===<br />
<br />
{{Note|Update 2011-03-12. Arduino Is not shipping a Makefile with version (22). The Makefile from the [http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/SpaceTrash/Makefile.uno_dogs102 dogm128] project works for me though.}}<br />
<br />
Instead of using the Arduino IDE it is possible to use another editor and a Makefile.<br />
<br />
Set up a directory to program your Arduino and copy the Makefile into this directory. A copy of the Makefile can be obtained from /usr/share/arduino/hardware/cores/arduino/Makefile<br />
<br />
You will have to modify this a little bit to reflect your settings. The makefile should be pretty self explanatory. Here are some lines you may have to edit.<br />
<br />
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into<br />
TARGET = your sketch's name<br />
ARDUINO = /usr/share/arduino/lib/targets/arduino<br />
<br />
Depending on which library functions you call in your sketch, you may need to compile parts of the library. To do that you need to edit your SRC and CXXSRC to include the required libraries.<br />
<br />
Now you should be able to make && make upload to your board to execute your sketch.<br />
<br />
=== Arduino-mk ===<br />
<br />
{{AUR|arduino-mk}} is another alternative Makefile approach. It allows users to have a local Makefile that includes Arduino.mk. See [https://github.com/sudar/Arduino-Makefile project page] for usage.<br />
<br />
For Arduino 1.5, try the following local Makefile (because Arduino 1.5's library directory structure is slightly different):<br />
<br />
ARDUINO_DIR = /usr/share/arduino<br />
ARDMK_DIR = /usr/share/arduino<br />
AVR_TOOLS_DIR = /usr<br />
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino<br />
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt<br />
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants<br />
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders<br />
<br />
<br />
BOARD_TAG = uno<br />
ARDUINO_LIBS =<br />
<br />
include /usr/share/arduino/Arduino.mk<br />
<br />
In some cases you could need to install {{pkg|avr-libc}} and {{pkg|avrdude}}.<br />
<br />
=== Scons ===<br />
<br />
Using [http://www.scons.org/ scons] together with [https://github.com/suapapa/arscons arscons] it is very easy to use to compile and upload Arduino projects from the command line. Scons is based on python and you will need python-pyserial to use the serial interface. Install {{Pkg|python-pyserial}} and {{Pkg|scons}}.<br />
<br />
That will get the dependencies you need too. You will also need Arduino itself so install it as described above. Create project directory (eg. test), then create a arduino project file in your new directory. Use the same name as the directory and add .ino (eg. test.ino). Get the [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] script from arscons and put it in your directory. Have a peek in it and, if necessary, edit it. It is a python script. Edit your project as you please, then run<br />
<br />
$ scons # This will build the project<br />
$ scons upload # This will upload the project to your Arduino<br />
<br />
=== PlatformIO ===<br />
<br />
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] is a python tool to build and upload sketches for multiple Hardware Platforms, at the moment of writing these are Arduino/AVR based boards, TI MSP430 and TI TM4C12x Boards. In the near future the author plans to add a library function that allows to search and include libraries directly from GitHub.<br />
<br />
==== Installation ====<br />
<br />
Its recommended to use a virtual environment because platformio uses python2 because its based on SCons which does not support python3. <br />
<br />
$ virtualenv --python=python2 venv<br />
$ source ./venv/bin/activate<br />
$ pip install platformio<br />
<br />
==== Usage ====<br />
<br />
$ platformio install atmelavr<br />
$ platformio init<br />
$ vim platformio.ini<br />
<br />
#<br />
# Atmel AVR based board + Arduino Wiring Framework<br />
#<br />
[env:ArduinoMega2560]<br />
platform = atmelavr<br />
framework = arduino<br />
board = megaatmega2560 <br />
upload_port = /dev/ttyACM0 <br />
targets = upload<br />
<br />
$ platformio run<br />
<br />
== Troubleshooting ==<br />
<br />
=== Version 1.5.x ===<br />
<br />
As of Oct 5, 2014, most of the 3rd party tools only work for Arduino 1.x ({{AUR|arduino}}). Some of the tools may partially work for Arduino version 1.5 ({{AUR|arduino-beta}}) and after. Check the version if the tools don't work.<br />
<br />
=== Consistent naming of Arduino devices ===<br />
<br />
If you have more than one arduino you may have noticed that they names /dev/ttyUSB[0-9] are assigned in the order of connection. In the IDE this is not so much of a problem, but when you have programmed your own software to communicate with an arduino project in the background this can be annoying. Use the following udev rules to assign static symlinks to your arduino's:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"<br />
</nowiki>}}<br />
Your arduino's will be available under names like "/dev/sensors/ftdi_A700dzaF". If you want you can also assign more meaningfull names to several devices like this:<br />
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki><br />
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"<br />
</nowiki>}}<br />
which will create a symlink in /dev/arduino/nano to the device with the specified serialnumber.<br />
You do need to unplug and replug your arduino for this to take effect or run<br />
udevadm trigger<br />
<br />
=== Error opening serial port ===<br />
<br />
You may see the serial port initially when the IDE starts, but the TX/RX leds do nothing when uploading. You may have previously changed the baudrate in the serial monitor to something it does not like. Edit ~/.arduino/preferences.txt so that serial.debug_rate is a different speed, like 115200.<br />
<br />
=== Permissions to open serial port and create lockfile ===<br />
<br />
Arduino uses java-rxtx to do the serial communications. It expects to create lock files in /var/lock/lockdev, so you need to be in the <tt>lock</tt> group. USB serial devices such as /dev/ttyUSB0 or /dev/ttyACM0 will often be assigned to the <tt>uucp</tt> group, so as long as you are adding yourself to groups, you should add that one too.<br />
<br />
=== Missing twi.o ===<br />
<br />
If the file /usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o does not exist arduino may try to create it. Normal users do not have permission to write there so this will fail. Run arduino as root so it can create the file, after the file has been created arduino can be run under a normal user.<br />
<br />
=== Working with Uno/Mega2560 ===<br />
<br />
The Arduino Uno and Mega2560 have an onboard USB interface (an Atmel 8U2) that accepts serial data, so they are accessed through /dev/ttyACM0 created by the cdc-acm kernel module when it is plugged in.<br />
<br />
The 8U2 firmware may need an update to ease serial communications. See [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] for more details and reply #11 for a fix. The original arduino bbs, where you can find an image explaining how to get your Uno into DFU, is now in a read-only state. If you do not have an account to view the image, see [http://www.scribd.com/doc/45913857/Arduino-UNO].<br />
<br />
You can perform a general function test of the Uno by putting it in loopback mode and typing characters into the arduino serial monitor at 115200 baud. It should echo the characters back to you. To put it in loopback, short pins 0 -> 1 on the digital side and either hold the reset button or short the GND -> RESET pins while you type.<br />
<br />
=== error compiling ===<br />
if you get following message (in verbose mode)<br />
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm<br />
<br />
see this fix [https://bbs.archlinux.org/viewtopic.php?pid=1343402#p1343402]<br />
* install package avr-gcc<br />
* Replace build-in avr-gcc compiler by same from package installed on previous step:<br />
# cd /usr/share/arduino/hardware/tools/avr/bin<br />
# mv ./avr-gcc ./avr-gcc-backup<br />
# ln -s /usr/bin/avr-gcc ./<br />
<br />
To use the avr tools that are system installed, remove the avr directory as per the Arduino Linux install page:<br />
"If you want to use your system's compiler, delete the folder ./hardware/tools/avr in your arduino IDE installation"<br />
<br />
An alternate approach to take is to download the corresponding Linux install from Arduino.cc and replace the /usr/share/arduino/hardware/tools/avr directory with the avr directory that comes in the stock installation archive.<br />
<br />
=== avrdude missing libtinfo.so.5 ===<br />
When uploading a sketch to the Arduino, the following message is thrown in the Arduino UI concole:<br />
/usr/share/arduino/hardware/tools/avr/bin/avrdude: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory<br />
<br />
Solve the dependency problem by creating a symbolic link<br />
$ cd /usr/lib<br />
$ sudo ln -s libncurses.so.5 libtinfo.so.5<br />
<br />
For more info:<br />
https://bbs.archlinux.org/viewtopic.php?pid=1108717#p1108717<br />
<br />
== See also ==<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=295312<br />
* https://bbs.archlinux.org/viewtopic.php?pid=981348<br />
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=ECryptfs&diff=360112ECryptfs2015-02-09T15:04:25Z<p>Ilfugiuliopascal: /* Encrypting a home directory */ lsof is needed</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Security]]<br />
[[Category:File systems]]<br />
[[fr:Encryption avec eCryptfs]]<br />
[[it:System Encryption with eCryptfs]]<br />
[[ru:eCryptfs]]<br />
{{Related articles start}}<br />
{{Related|Disk encryption}}<br />
{{Related articles end}}<br />
This article describes basic usage of [https://launchpad.net/ecryptfs eCryptfs]. It guides you through the process of creating a private and secure encrypted directory within your {{ic|$HOME}} directory to store sensitive files and private data.<br />
<br />
In implementation eCryptfs differs from dm-crypt, which provides a ''block device encryption layer'', while eCryptfs is an actual file-system &ndash; a [http://en.wikipedia.org/wiki/Cryptographic_filesystems stacked cryptographic file system]. For comparison of the two you can refer to [http://ksouedu.com/doc/ecryptfs-utils/ecryptfs-faq.html#compare this table] and the [[Disk encryption#Comparison table]]. One distinguished feature is that the encryption is stacked on an existing filesystem; eCryptfs can be mounted onto any single existing directory and does not require a separate partition (or size pre-allocation). <br />
<br />
{{Note|The article is in the process of being re-structured. If you need to find information that might not be in its place yet again, the revision before the restructuring is [https://wiki.archlinux.org/index.php?title&#61;ECryptfs&oldid&#61;291214 here].}}<br />
<br />
== Basics ==<br />
<br />
As mentioned in the summary eCryptfs does not require special on-disk storage allocation effort, such as a separate partition or pre-allocated space. Instead, you can mount eCryptfs on top of any single directory to protect it. That includes, for example, a user's entire {{ic|$HOME}} directory or single dedicated directories within it. All cryptographic metadata is stored in the headers of files, so encrypted data can be easily moved, stored for backup and recovered. There are other advantages, but there are also drawbacks, for instance eCryptfs is not suitable for encrypting complete partitions which also means you cannot protect swap space with it (but you can, of course, combine it with [[Dm-crypt/Swap_encryption]]). If you are just starting to set up disk encryption, swap encryption and other points to consider are covered in [[Disk encryption#Preparation]].<br />
<br />
To familiarize with eCryptfs a few points: <br />
* As a stacked filesystem, a mounting of an eCryptfs directory refers to mounting a (stacked) encrypted directory to another '''un'''encrypted mount point (directory) at Linux kernel runtime. <br />
* It is possible to share an encrypted directory between users. However, the encryption is linked to one passphrase so this must be shared as well. It is also possible to share a directory with differently encrypted files (different passphrases). <br />
* A number of eCryptfs acronyms are used throughout the documentation: <br />
** The encrypted directory is referred to as the '''lower''' and the unencrypted as the '''upper''' directory throughout the eCryptfs documentation and this article. While not relevant for this article, the "overlay" filesystem introduced with Linux 3.18 uses (and [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/overlayfs.txt explains]) the same upper/lower nomenclatura for the stacking of filesystems. <br />
** the '''mount''' passphrase (or key) is what gives access to the encrypted files, i.e. unlocks the encryption. eCryptfs uses the term '''wrapped''' passphrase to refer to the cryptographically secured mount passphrase.<br />
** a {{ic|FEKEK}} refers to a '''F'''ile's '''E'''ncryption key '''E'''ncryption '''Key''' (see [https://www.kernel.org/doc/Documentation/security/keys-ecryptfs.txt kernel documentation]). <br />
** a {{ic|FNEK}} refers to a '''F'''ile '''N'''ame '''E'''ncryption '''K'''ey, a key to (optionally) encrypt the filenames stored in the encrypted directory.<br />
<br />
Before using eCryptfs, the following disadvantages should be checked for applicability. <br />
<br />
=== Deficiencies ===<br />
<br />
* Hard-coded variables <br />
:The best usability of eCryptfs is achieved by relying on the so-called "Ubuntu tools" of the {{Pkg|ecryptfs-utils}} package. A considerable downside is that a lot of variables (encryption options, lower directory path) are hard-coded into the tools. Changing them infers considerable manual configuration to achieve similar integration. <br />
* Network storage mounts<br />
:eCryptfs has long-standing [https://bugs.launchpad.net/ecryptfs/+bug/277578 bugs] and/or feature requests relating to networked storage. Replicating a content backup of an encrypted directory to a network backup storage is always possible. However, if you want to employ ecryptfs to store the encrypted directory directly on a network storage and mount it locally, you should search for working solutions of the respective network tools (NFS, Samba, etc.) first. If in doubt, [[Encfs]] may be a better choice for such application.<br />
<br />
* Sparse files<br />
:eCryptfs does not handle [https://en.wikipedia.org/wiki/Sparse_file sparse files]. This is sometimes referred to as a bug, but likewise is a consequence of the design as a [[Disk encryption#Stacked filesystem encryption|stacked filesystem encryption]]. For example, in an eCryptfs directory a {{ic|truncate -s 1G file.img}} creates 1GB encrypted data and passes it to the underlying filesystem to store; with the corresponding resource (disk space, data throughput) requirements. Unencrypted, the same file can be allocated efficiently as sparse file space by the filesystem; with a [[Disk_encryption#Block device encryption|block device encryption]] only the respective filesystem output would be encrypted. <br />
<br />
:This should be considered before encrypting large portions of the directory structure. For most intents and purposes this deficiency does not pose a problem. One workaround is to place sparse files in an unencrypted {{ic|.Public}} directory (as opposed to the standard eCryptfs {{ic|.Private}} directory, explained below). Another method is to use a ''dm-crypt'' [[Dm-crypt/Encrypting_a_non-root_file_system#Loop_device|container]] in {{ic|.Public}} for such.<br />
<br />
== Setup example overview ==<br />
<br />
The following [[#Setup_.26_Mounting|#Setup & mounting]] section describes alternatives using eCryptfs to encrypt a data directory. The alternatives start with [[#Using the Ubuntu tools]], which make eCryptfs usage particularly easy and also safe against user errors. This also applies to [[#Encrypting a home directory]] with the tools. During setup, instructions are given on the console by the scripts. The [[#Using_ecryptfs-simple]] section then introduces an alternative package to aide using eCryptfs. The [[#Manual setup]] section then describes the setup using the {{ic|ecryptfs}} filesystem directly. The first subsection ([[#With ecryptfs-utils]]) still uses one more script and is suggested to read to familiarize with the setup of the manual options before using them [[#Without ecryptfs-utils]]. <br />
<br />
The alternatives include <br />
# the setup step for the encrypted directory structures <br />
# the setup to mount, unmount the directory at runtime manually and/or automatically at user login<br />
Each of the described alternative examples can be removed after setup very easily, so do not refrain from testing which suits your needs best.<br />
<br />
== Setup & mounting ==<br />
<br />
eCryptfs is a part of Linux since version 2.6.19. But to work with it you will need the userspace tools provided by the package {{pkg|ecryptfs-utils}} available in the [[Official repositories]].<br />
<br />
Once you have installed that package you can load the {{ic|ecryptfs}} module and continue with the setup:<br />
# modprobe ecryptfs<br />
<br />
Before starting, check the eCryptfs documentation. It is distributed with a very good and complete set of [http://ecryptfs.org/documentation.html manual pages].<br />
<br />
{{Tip|If you use {{Pkg|linux-grsec}}, auto-loading of cryptographic modules may fail when executing the {{ic|ecryptfs-mount-private}} wrapper (as of November 2014). As a work-around, load the mentioned module manually; for example {{ic|modprobe md5}} as root and [[Modprobe.d#Loading|configure]] the system to load it at next boot.}}<br />
<br />
=== Using the Ubuntu tools ===<br />
<br />
Most of the user-friendly convenience tools installed by the ''ecryptfs-utils'' package assume a very specific eCryptfs setup, namely the one that is officially used by Ubuntu (where it can be selected as an option during distro installation). Unfortunately, these choices are not just default options but are actually hard-coded in the tools. If this set-up does not suit your needs, then you can not use the convenience tools and will have to follow the steps at [[#Manual_setup]] instead.<br />
<br />
The set-up used by these tools is as follows:<br />
{| class="wikitable" style="margin-left: 2em; margin-right: 2em; margin-bottom: 0.8em;"<br />
|<br />
* each user can have '''only one encrypted directory''' that is managed by these tools:<br />
** either full {{ic|$HOME}} directory encryption, or <br />
** a single encrypted data directory (by default {{ic|~/Private/}}, but this can be customized).<br />
* the '''lower directory''' for each user is always {{ic|~/.Private/}}<br><small>(in the case of full home dir encryption, this will be a symlink to the actual location at {{ic|/home/.ecryptfs/$USER/.Private/}})</small><br />
* the '''encryption options''' used are:<br />
** ''cipher:'' AES<br />
** ''key length:'' 16 bytes (128 bits)<br />
** ''key management scheme:'' passphrase<br />
** ''plaintext passthrough:'' enabled<br />
* the '''configuration / control info''' for the encrypted directory is stored in a bunch of files at {{ic|~/.ecryptfs/}}:<br><small>(in the case of full home dir encryption, this will be a symlink to the actual location at {{ic|/home/.ecryptfs/$USER/.ecryptfs/}})</small><br />
** {{ic|Private.mnt}} ''[plain text file]'' - contains the path where the upper directory should be mounted (e.g. {{ic|/home/lucy}} or {{ic|/home/lucy/Private}})<br />
** {{ic|Private.sig}} ''[plain text file]'' - contains the signature used to identify the mount passphrase in the kernel keyring<br />
** {{ic|wrapped-passphrase}} ''[binary file]'' - the mount passphrase, encrypted with the login passphrase<br />
** {{ic|auto-mount}}, {{ic|auto-umount}} ''[empty files]'' - if they exist, the {{ic|pam_ecryptfs.so}} module will (assuming it is loaded) automatically mount/unmount this encrypted directory when the user logs in/out<br />
|}<br />
<br />
==== Encrypting a data directory ====<br />
For a full {{ic|$HOME}} directory encryption see [[#Encrypting a home directory]]<br />
<br />
Before the data directory encryption is setup, decide whether it should later be mounted manually or automatically with the user log-in. <br />
<br />
To encrypt a single data directory as a user and mount it manually later, run:<br />
$ ecryptfs-setup-private --nopwcheck --noautomount <br />
<br />
and follow the instructions. The option {{ic|--nopwcheck}} enables you to choose a passphrase different to the user login passphrase and the option {{ic|--noautomount}} is self-explanatory. So, if you want to setup the encrypted directory automatically on log-in later, just ''leave out'' both options right away. <br />
<br />
The script will automatically create the {{ic|~/.Private/}} and {{ic|~/.ecryptfs/}} directory structures as described in the box above. It will also ask for two passphrases:<br />
<br />
;'''login passphrase''': This is the password you will have to enter each time you want to mount the encrypted directory. If you want auto-mounting on login to work, it has to be the same password you use to login to your user account. <br />
<br />
;'''mount passphrase''': This is used to derive the actual file encryption master key. Thus, you should not enter a custom one unless you know what you are doing - instead press Enter to let it auto-generate a secure random one. It will be encrypted using the login passphrase and stored in this encrypted form in {{ic|~/.ecryptfs/wrapped-passphrase}}. Later it will automatically be decrypted ("unwrapped") again in RAM when needed, so you never have to enter it manually. Make sure this file does not get lost, otherwise you can never access your encrypted folder again! You may want to run {{ic|ecryptfs-unwrap-passphrase}} to see the mount passphrase in unencrypted form, write it down on a piece of paper, and keep it in a safe (or similar), so you can use it to recover your encrypted data in case the ''wrapped-passphrase'' file is accidentally lost/corrupted or in case you forget the login passphrase.<br />
<br />
The mount point ("upper directory") for the encrypted folder will be at {{ic|~/Private}} by default, however you can manually change this right after the setup command has finished running, by doing:<br />
<br />
$ mv ~/Private /path/to/new/folder<br />
$ echo /path/to/new/folder > ~/.ecryptfs/Private.mnt<br />
<br />
To actually use your encrypted folder, you will have to mount it - see [[#Mounting]] below.<br />
<br />
==== Encrypting a home directory ====<br />
<br />
The following wrapper script will set up an encrypted {{ic|$HOME}} directory for a user and take care of migrating any existing files they have in their not yet encrypted home directory. Ensure that the user in question ''owns no processes'' and is ''logged out''. You also need to ensure that you have {{pkg|rsync}} and {{pkg|lsof}} installed. Once the prerequisites have been met, run:<br />
<br />
# ecryptfs-migrate-home -u ''username''<br />
<br />
and follow the instructions. After the wrapper script is complete, follow the instructions for auto-mounting - see [[#Auto-mounting]] below. It is imperative that the user logs in ''before'' the next reboot, to complete the process.<br />
<br />
==== Mounting ====<br />
<br />
===== Manually =====<br />
<br />
Executing the wrapper <br />
$ ecryptfs-mount-private <br />
and entering the passphrase is all needed to mount the encrypted directory to the [[#Using_the_Ubuntu_tools|above]] described ''upper directory'' {{ic|~/Private}}. <br />
<br />
Likewise, executing<br />
$ ecryptfs-umount-private<br />
will unmount it again. <br />
<br />
{{Tip|If it is not required to access the private data permanently during a user session, maybe define an [[Bash#Aliases|alias]] to speed the manual step up.}}<br />
<br />
The tools include another script that can be very handy to access an encrypted {{ic|.Private}} data or home directory. Executing {{ic|ecryptfs-recover-private}} as root will search the system (or an optional specific path) for the directory, interactively query the passphrase for it and mount the directory. It can, for example, be used from a live-CD or different system to access the encrypted data in case of a recovery. Note that if booting from an Arch Linux ISO you must first install the {{pkg|ecryptfs-utils}} to it. Further, it will only be able to mount {{ic|.Private}} directories created with the Ubuntu tools.<br />
<br />
===== Auto-mounting ===== <br />
<br />
The default way to auto-mount an encrypted directory is via [[Pam_mount|PAM]]. See {{ic|man pam_ecryptfs}} and - for more details - 'PAM MODULE' in:<br />
/usr/share/doc/ecryptfs-utils/README<br />
<br />
For auto-mounting it is required that the passphrase to access the encrypted directory is synchronised with the user log-in. <br />
<br />
The following steps set it up: <br />
<br />
1. Check if {{ic|~/.ecryptfs/auto-mount}} and {{ic|~/.ecryptfs/wrapped-passphrase}} exist (these are automatically created by ''ecryptfs-setup-private'').<br />
<br />
2. Add ''ecryptfs'' to the pam-stack exactly as following to allow transparent unwrapping of the passphrase on login:<br />
<br />
Open {{ic|/etc/pam.d/system-auth}} and ''after'' the line containing {{ic|auth required pam_unix.so}} add:<br />
auth required pam_ecryptfs.so unwrap<br />
Next, ''above'' the line containing {{ic|password required pam_unix.so}} insert:<br />
password optional pam_ecryptfs.so<br />
And finally, ''after'' the line {{ic|session required pam_unix.so}} add:<br />
session optional pam_ecryptfs.so<br />
<br />
3. Re-login and check output of ''mount'' which should now contain a mountpoint, e.g.:<br />
/home/$USER/.Private on /home/$USER/Private type ecryptfs (...)<br />
for the user's encrypted directory. It should be perfectly readable at {{ic|~$HOME/Private/}}. <br />
<br />
Note that the latter will be automatically unmounted and made unavailable when the user logs off.<br />
<br />
=== Using ecryptfs-simple ===<br />
<br />
Use [http://xyne.archlinux.ca/projects/ecryptfs-simple/ ecryptfs-simple] if you just want to use eCryptfs to mount arbitrary directories the way you can with [[EncFS]]. ecryptfs-simple does not require root privileges or entries in {{ic|/etc/fstab}}, nor is it limited to hard-coded directories such as {{ic|~/.Private}}. The package is available in the [https://aur.archlinux.org/packages.php?ID=59612 AUR] and in [http://xyne.archlinux.ca/repos/ Xyne's repos].<br />
<br />
As the name implies, usage is simple:<br />
# simple mounting<br />
ecryptfs-simple /path/to/foo /path/to/bar<br />
<br />
# automatic mounting: prompts for options on the first mount of a directory then reloads them next time<br />
ecryptfs-simple -a /path/to/foo /path/to/bar<br />
<br />
# unmounting by source directory<br />
ecryptfs-simple -u /path/to/foo<br />
<br />
# unmounting by mountpoint<br />
ecryptfs-simple -u /path/to/bar<br />
<br />
=== Manual setup ===<br />
<br />
The following details instructions to set up eCryptfs encrypted directories manually. The first section still relies on one extra script from the {{Pkg|ecryptfs-utils}} package. It may be an easier start and can be tried without any root rights. The [[#Without ecryptfs-utils|second]] then sets up an encrypted directory with other encryption options than the default tools. <br />
<br />
{{Tip|The following examples use an encrypted directory ({{ic|.secret}}) different to the default, hard-coded {{ic|.Private}} in the Ubuntu tools. This is on purpose to avoid problems of erroneous [[#Auto-mounting]] when the system has PAM setup for it, as well as problems with other tools using the hard-coded defaults.}} <br />
<br />
==== With ecryptfs-utils ====<br />
<br />
Alternatively to using the scripts {{ic|ecryptfs-setup-private}} and {{ic|ecryptfs-mount-private}} to setup and mount eCryptfs, the same can be done directly with the binaries (which those scripts use) {{ic|ecryptfs-add-passphrase}} and {{ic|mount.ecryptfs_private}} from the {{Pkg|ecryptfs-utils}} package. Those binaries require no root privileges to work by default.<br />
<br />
First choose an ALIAS as you like. Through this section, ALIAS will be {{ic|secret}}. Create the required directories/files:<br />
$ mkdir ~/.secret ~/secret ~/.ecryptfs<br />
$ touch ~/.ecryptfs/secret.conf ~/.ecryptfs/secret.sig<br />
<br />
The {{ic|~/.secret}} directory will hold the encrypted data. The {{ic|~/secret}} directory is the mount point where {{ic|~/.secret}} will be mounted as an ecryptfs filesystem.<br />
<br />
In the next command, replace USER with the name of the current user's home directory. Note that you should write full paths to {{ic|~/.ecryptfs/secret.conf}}. Its format looks like the one in {{ic|/etc/fstab}} without the mount options:<br />
$ echo "/home/USER/.secret /home/USER/secret ecryptfs" > ~/.ecryptfs/secret.conf<br />
<br />
A mount passphrase must be added to the keyring:<br />
$ ecryptfs-add-passphrase<br />
Passphrase: <br />
Inserted auth tok with sig [78c6f0645fe62da0] into the user session keyring<br />
<br />
Write the output signature ({{ic|ecryptfs_sig}}) from the previous command to {{ic|~/.ecryptfs/secret.sig}}:<br />
$ echo 78c6f0645fe62da0 > ~/.ecryptfs/secret.sig<br />
<br />
A second passphrase for filename encryption may be used. If you choose so, add it to the keyring:<br />
$ ecryptfs-add-passphrase<br />
Passphrase: <br />
Inserted auth tok with sig [326a6d3e2a5d444a] into the user session keyring<br />
<br />
If you run the command above, '''append''' its output signature ({{ic|ecryptfs_fnek_sig}}) to {{ic|~/.ecryptfs/secret.sig}}:<br />
$ echo 326a6d3e2a5d444a >> ~/.ecryptfs/secret.sig<br />
<br />
Finally, to mount {{ic|~/.secret}} on {{ic|~/secret}}:<br />
$ mount.ecryptfs_private secret<br />
<br />
An eCryptfs filesystem will be mounted with the following options:<br />
rw,nosuid,nodev,relatime,ecryptfs_fnek_sig=326a6d3e2a5d444a,ecryptfs_sig=78c6f0645fe62da0,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs<br />
<br />
Except for {{ic|ecryptfs_sig}} and {{ic|ecryptfs_fnek_sig}}, the options are hard-coded. {{ic|ecryptfs_fnek_sig}} will exist only if you choose filename encryption.<br />
<br />
To unmount {{ic|~/.secret}}:<br />
$ umount.ecryptfs_private secret<br />
<br />
==== Without ecryptfs-utils ====<br />
<br />
The ecryptfs-utils package is distributed with a few helper scripts which will help you with key management and similar tasks. If one wants, for example, make a choice about the encryption cipher, some of those scripts cannot be used. In this section we setup an encrypted data directory diverting from those defaults. <br />
<br />
First create your private directories, in this example we will call them analogous to the previous section: {{ic|secret}}<br />
$ mkdir -m 700 /home/username/{.secret,.ecryptfs}<br />
$ mkdir -m 500 /home/username/secret<br />
<br />
To summarize:<br />
* Actual encrypted data will be stored in the lower {{ic|~/.secret}} directory <br />
* While mounted, decrypted data will be available in {{ic|~/secret}} directory <br />
** While not mounted nothing can be written to this directory<br />
** While mounted it has the same permissions as the lower directory<br />
<br />
Second we create the mount-passphrase ("file encryption key, encryption key", or '''fekek''') for the directory. It has to be very secure and cannot be changed easily. The ''ecryptfs-setup-private'' script offers the option to generate it from {{ic|/dev/urandom}}. In the following we do a generation similar to the [http://bazaar.launchpad.net/~ecryptfs/ecryptfs/trunk/view/head:/src/utils/ecryptfs-setup-private#L96 source] and then use ''ecryptfs-wrap-passphrase'' to wrap it with an extra password ("Arch"): <br />
<br />
$ printf "%s\n%s" $(od -x -N 100 --width=30 /dev/random | head -n 1 | sed "s/^0000000//" | sed "s/\s*//g") "Arch" | ecryptfs-wrap-passphrase /home/username/.ecryptfs/wrapped-passphrase<br />
<br />
The advantages of the above step are: the mount passphrase is generated from a random source and secured by extra hashing before it is stored on disk. Further, the wrap-passphrase can be changed later. <br />
<br />
Next, we test the passphrase by loading it into the kernel keyring: <br />
<br />
$ printf "%s" "Arch" | ecryptfs-insert-wrapped-passphrase-into-keyring /home/username/.ecryptfs/wrapped-passphrase -<br />
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring<br />
and manually copy the signature into the configuration: <br />
$ echo "7c5d3dd8a1b49db0" > ~/.ecryptfs/secret.sig<br />
<br />
Now we continue to setup the encryption options for the directory and prepare an user-mountable entry for {{ic|/etc/fstab}}. If you already know the eCryptfs options to use in it, you can skip the following ''mount'' and create an entry with the above signature already. <br />
<br />
The ''mount.ecryptfs'' command needs root and does not allow for piping the passphrase unfortunately. The mount helper will ask questions about the options we want to choose ("Key type": passphrase - choose any, we only do this to generate the options to use), but let it mount: <br />
<br />
# mount -t ecryptfs /home/username/.secret /home/username/secret<br />
Passphrase: yes<br />
Cipher: aes<br />
Key byte: 32<br />
Plaintext passtrough: no<br />
Filename encryption: no<br />
Add signature to cache: yes <br />
<br />
To summarize the parameters: <br />
* The above chosen {{ic|32}} "key bytes" result in a 256 bit AES encryption (the helper scripts are hard-coded to AES with 128 bit).<br />
* Plaintext passtrough enables to store and work with '''un-encrypted''' files stored in the lower directory.<br />
* In eCryptfs terms the key used to protect filenames is known as "filename encryption key", or '''fnek'''<br />
* '''fekek''' and '''fnek''' can be the same key or different ones at choice <br />
<br />
To create the mount point for the user in [[fstab]], find the current mount and copy it. For example ({{ic|XY}} are placeholders here): <br />
<br />
{{hc|# mount|2=/home/username/.secret on /home/username/secret type ecryptfs (... ecryptfs_fnek_sig=XY,ecryptfs_sig=XY,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs, user)}}<br />
<br />
Or, alternatively, append it into {{ic|/etc/fstab}} to edit it: <br />
<br />
# mount | grep secret >> /etc/fstab <br />
<br />
Before continuing, we can already un-mount the temporary mount we used to generate the options: <br />
# umount /home/username/secret<br />
<br />
Now the mount line has to be edited into the correct format, the mount options {{ic|nosuid,nodev,noexec,relatime}} before the first ''ecryptfs'' option are default and can be left out. But what we need to add is the correct signatures for the passphrases to replace the ones of the current mount: <br />
# cat /home/username/.ecryptfs/secret.sig <br />
7c5d3dd8a1b49db0 <br />
<br />
We also need to add the options {{ic|user}} and {{ic|noauto}}. After the edit, the entry will look similar to (bold entries added): <br />
<br />
{{hc|/etc/fstab|2=/home/username/.secret /home/username/secret ecryptfs '''noauto''','''user''',ecryptfs_fnek_sig='''7c5d3dd8a1b49db0''',ecryptfs_sig='''7c5d3dd8a1b49db0''',ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs '''0 0'''}}<br />
<br />
Some options to note: <br />
* The {{ic|ecryptfs_fnek_sig}} option will be only listed if you enabled filename encryption <br />
* The second last option {{ic|ecryptfs_unlink_sigs}} ensures that the keyring is cleared every time the directory is un-mounted<br />
* The bold options have been added: <br />
** The {{ic|user}} option enables to mount the directory as a user <br />
** The {{ic|noauto}} option is important, because otherwise systemd will error trying to mount the entry directly on boot. <br />
* The user mount will default to option {{ic|noexec}}. If you want to have at least executable files in your private directory, you can add {{ic|exec}} to the fstab options.<br />
<br />
The setup is now complete and directory should be mountable by the user. <br />
<br />
===== Mounting =====<br />
<br />
To mount the encrypted directory as the user, the passphrase must be unwrapped and made available in the user's keyring. Following above section example: <br />
<br />
$ ecryptfs-insert-wrapped-passphrase-into-keyring /home/username/.ecryptfs/wrapped-passphrase<br />
Passphrase: <br />
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring <br />
<br />
Now the directory can be mounted without the mount helper questions: <br />
$ mount -i /home/username/secret<br />
<br />
and files be placed into the {{ic|secret}} directory. The above two steps are necessary every time to mount the directory manually. <br />
<br />
To unmount it again: <br />
<br />
$ umount /home/username/secret<br />
<br />
To finalize, the preliminary passphrase to wrap the encryption passphrase may be changed: <br />
$ ecryptfs-rewrap-passphrase /home/username/.ecryptfs/wrapped-passphrase<br />
Old wrapping passphrase: <br />
New wrapping passphrase: <br />
New wrapping passphrase (again):<br />
<br />
The un-mounting should also clear the keyring, to check the user's keyring or clear it manually: <br />
$ keyctl list @u<br />
$ keyctl clear @u<br />
<br />
{{Note|One should remember that {{ic|/etc/fstab}} is for system-wide partitions only and should not generally be used for user-specific mounts}}<br />
<br />
===== Auto-mounting =====<br />
<br />
{{Expansion|<br>- this section should be more generic & comprehensive than it is now<br><br />
- make sure it properly fits in with the article structure|section=Major_restructuring/rewrite}}<br />
<br />
An automount of an eCryptfs directory on usr login can be configured using [[pam mount]] with the added benefit that the directory is un-mounted when all sessions are logged out. Add the following lines to {{ic|/etc/security/pam_mount.conf.xml}}:<br />
<br />
<luserconf name=".pam_mount.conf.xml" /><br />
<mntoptions require="" /> <!-- Default required mount options are ; this clears them --><br />
<lclmount>mount -i %(VOLUME) "%(before=\"-o\" OPTIONS)"</lclmount> <!-- --><br />
<br />
Please prefer writing manually these lines instead of simply copy/pasting them (especially the lclmount line), otherwise you might get some corrupted characters.<br />
Explanation:<br />
* the first line indicates where the user-based configuration file is located (here {{ic|~/.pam_mount.conf.xml}}) ;<br />
* the second line overwrites the default required mount options which are unnecessary ("nosuid,nodev") ;<br />
* the last line indicates which mount command to run (eCryptfs needs the {{Ic|-i}} switch).<br />
<br />
Then set the volume definition, preferably to {{ic|~/.pam_mount.conf.xml}}:<br />
<pam_mount><br />
<volume noroot="1" fstype="ecryptfs" path="/home/user/.secret/" mountpoint="/home/user/secret/"/><br />
</pam_mount><br />
<br />
"noroot" is needed because the encryption key will be added to the user's keyring<br />
<br />
Finally, edit {{ic|/etc/pam.d/login}} as described in [[pam_mount]]'s article.<br />
<br />
====== Optional step ======<br />
<br />
To avoid wasting time needlessly unwrapping the passphrase you can create a script that will check ''pmvarrun'' to see the number of open sessions:<br />
#!/bin/sh<br />
#<br />
# /usr/local/bin/doecryptfs<br />
<br />
exit $(/usr/sbin/pmvarrun -u$PAM_USER -o0)<br />
<br />
With the following line added before the eCryptfs unwrap module in your PAM stack:<br />
auth [success=ignore default=1] pam_exec.so quiet /usr/local/bin/doecryptfs<br />
auth required pam_ecryptfs.so unwrap<br />
The article suggests adding these to {{ic|/etc/pam.d/login}}, but the changes will need to be added to all other places you login, such as {{ic|/etc/pam.d/kde}}.<br />
<br />
== Usage ==<br />
<br />
{{Expansion|Content that still needs to be covered:<br />
- point to the above "Setup & Mounting" section for how to mount and unmount [this section here will cover all other (i.e. setup-independent) usage info]<br><br />
- reference ecryptfs tools not used/mentioned in the prior sections (e.g. with a short link to the online manpages and mention of the other tools usage, as it seems useful (not covered yet are, e.g. ecryptfs-stat, ecryptfs-find, ecryptfs-rewrite-file.) <br><br />
- mention the options to share an encrypted folder between users and to place non-encrypted files or folders in the encrypted container ("pass-through")<br />
|section=Major_restructuring/rewrite}}<br />
<br />
=== Symlinking into the encrypted directory ===<br />
<br />
Besides using your private directory as storage for sensitive files, and private data, you can also use it to protect application data. [[Firefox]] for example has an internal password manager, but the browsing history and cache can also be sensitive. Protecting it is easy:<br />
$ mv ~/.mozilla ~/Private/mozilla<br />
$ ln -s ~/Private/mozilla ~/.mozilla<br />
<br />
=== Removal of encryption ===<br />
<br />
There are no special steps involved, if you want to remove your private directory. Make sure it is un-mounted and delete the respective lower directory (e.g. {{ic|~/.Private}}), along with all the encrypted files. After also removing the related encryption signatures and configuration in {{ic|~/.ecryptfs}}, all is gone. <br />
<br />
If you were [[#Using the Ubuntu tools]] to setup a single directory encryption, you can directly follow the steps detailed by: <br />
<br />
$ ecryptfs-setup-private --undo<br />
<br />
and follow the instructions.<br />
<br />
=== Backup ===<br />
<br />
If you want to move a file out of the private directory just move it to the new destination while {{ic|~/Private}} is mounted. <br />
<br />
With eCryptfs the cryptographic metadata is stored in the header of the files. Setup variants explained in this article separate the directory with encrypted data from the mount point. The unencrypted mount point is fully transparent and available for a backup. Obviously this has to be considered for automated backups, if one has to avoid leaking sensitive unencrypted data into a backup. <br />
<br />
You can do backups, or incremental backups, of the encrypted (e.g. {{ic|~/.Private}}) directory, treating it like any other directory. <br />
<br />
Further points to note: <br />
<br />
* If you used the Ubuntu tools for [[#Encrypting a home directory]], be aware the location of the lower directory with the encrypted files is ''outside'' the regular user's {{ic|$HOME}} at {{ic|/home/.ecryptfs/$USER/.Private}}. <br />
<br />
* It should be ensured to include the eCryptfs setup files (located in {{ic|~/.ecryptfs}} usually) into the regular or a separate backup.<br />
<br />
* If you use special filesystem mount options, for example {{ic|ecryptfs_xattr}}, do extra checks on restore integrity.<br />
<br />
== See Also ==<br />
<br />
* [http://ecryptfs.org/documentation.html eCryptfs] - Manpages and project home <br />
* [https://defuse.ca/audits/ecryptfs.htm Security audit] of eCryptfs by Taylor Hornby (January 22, 2014).<br />
* [http://sysphere.org/~anrxc/j/articles/ecryptfs/index.html eCryptfs and $HOME] by Adrian C. (anrxc) - Article with installation instructions and discussion of eCryptfs usage <br />
* [http://www.chromium.org/chromium-os/chromiumos-design-docs/protecting-cached-user-data Chromium data protection] (November 2009) - Design document detailing encryption options for Chromium OS, including explanation on its eCryptfs usage<br />
* [http://ecryptfs.sourceforge.net/ecryptfs.pdf eCryptfs design] by Michael Halcrow (May 2005) - Original design document detailing and discussing eCryptfs</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355372Lenovo IdeaPad Yoga 2 Pro2015-01-04T15:55:28Z<p>Ilfugiuliopascal: /* See also add another resource</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Multitouch gestures===<br />
You need to install {{aur|Touchegg}} from the [[AUR]] in order to enable multitouch gestures. Optionally, you can install {{aur|touchegg-gce-git}} as a graphical front-end. See more details in the [[Touchegg|dedicated wiki page]].<br />
{{Tip| If you use [[Gnome Shell]] you should start {{ic|touchegg}} before it, in order to avoid conflicts.}}<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==Bluetooth==<br />
Works out of the box. Test with:<br />
<br />
$ systemctl start bluetooth<br />
$ bluetoothctl<br />
[bluetooth]# power on<br />
<br />
See [[Bluetooth]] for more details.<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [http://www.linlap.com/lenovo_ideapad_yoga_2_pro];<br />
* a good Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro by KeithCU with useful comments [http://keithcu.com/wordpress/?p=3270 ];<br />
* an installation guide written by Ubuntu users: [http://askubuntu.com/questions/367963/ubuntu-on-lenovo-yoga-2-pro ].</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_Yoga_2_Pro&diff=355371Lenovo Yoga 2 Pro2015-01-04T15:46:05Z<p>Ilfugiuliopascal: Redirected page to Lenovo Ideapad Yoga 2 Pro</p>
<hr />
<div>#REDIRECT [[Lenovo Ideapad Yoga 2 Pro]]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355369Lenovo IdeaPad Yoga 2 Pro2015-01-04T15:43:22Z<p>Ilfugiuliopascal: Add bluetooth section</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Multitouch gestures===<br />
You need to install {{aur|Touchegg}} from the [[AUR]] in order to enable multitouch gestures. Optionally, you can install {{aur|touchegg-gce-git}} as a graphical front-end. See more details in the [[Touchegg|dedicated wiki page]].<br />
{{Tip| If you use [[Gnome Shell]] you should start {{ic|touchegg}} before it, in order to avoid conflicts.}}<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==Bluetooth==<br />
Works out of the box. Test with:<br />
<br />
$ systemctl start bluetooth<br />
$ bluetoothctl<br />
[bluetooth]# power on<br />
<br />
See [[Bluetooth]] for more details.<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355359Lenovo IdeaPad Yoga 2 Pro2015-01-04T14:26:58Z<p>Ilfugiuliopascal: /* Multitouch gestures */ I rewrote the content in a clearer way</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Multitouch gestures===<br />
You need to install {{aur|Touchegg}} from the [[AUR]] in order to enable multitouch gestures. Optionally, you can install {{aur|touchegg-gce-git}} as a graphical front-end. See more details in the [[Touchegg|dedicated wiki page]].<br />
{{Tip| If you use [[Gnome Shell]] you should start {{ic|touchegg}} before it, in order to avoid conflicts.}}<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Touchegg&diff=355231Touchegg2015-01-03T23:04:17Z<p>Ilfugiuliopascal: </p>
<hr />
<div>[[Category:Applications]]<br />
[[ja:touchegg]]<br />
[https://code.google.com/p/touchegg/ Touchegg] is a multitouch gesture program, that runs as a user in the background, and adds multitouch support to window managers.<br />
<br />
==Installation==<br />
Base package: {{AUR|touchegg}} in the [[AUR]]. Alternatively, it is also available {{aur|touchegg-svn}}.<br />
<br />
You may want to install also a GUI configuration editor, Touchegg-GCE [https://github.com/Raffarti/Touchegg-gce]: {{AUR|touchegg-gce-git}} in the [[AUR]].<br />
<br />
==Configuration==<br />
The configuration file is found in {{ic|$HOME/.config/touchegg/touchegg.conf}}.<br />
<br />
It is a basic XML file that defines various gestures. Please note that at this time <code>TAP_AND_HOLD</code>, <code>PINCH</code>, and <code>ROTATE</code>, do not appear to work.<br />
<br />
The list of triggers can be found [http://code.google.com/p/touchegg/wiki/AllGestures here]<br />
<br />
The list of actions can be found [http://code.google.com/p/touchegg/wiki/AllActions here]<br />
<br />
====Gnome Shell====<br />
Very basic so far. This should give you basic functionality. Hopefully we can update this for complete application support.<br />
<br />
edit <code>$HOME/.config/touchegg/touchegg.conf</code><br />
add this:<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="1" direction="ALL"><br />
<action type="DRAG_AND_DROP">BUTTON=1</action><br />
</gesture><br />
}}<br />
<br />
and then edit this entry:<br />
<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="2" direction="ALL"><br />
<action type="SCROLL">SPEED=7:INVERTED=<b>true</b></action><br />
</gesture><br />
}}<br />
<br />
=====Start on login=====<br />
# Hit <code>alt-f2</code>;<br />
# type <code>gnome-session-properties</code>;<br />
# hit <code>add</code>;<br />
# in the box labeled "Command" type <code>touchegg</code>. Fill in "Name" and "Label" as you choose;<br />
# hit <code>OK</code>.<br />
<br />
{{note| {{ic|gnome-session-properties}} has been removed from {{ic|gnome 3.12}}. Currently, you can install {{aur|gnome-session-properties}} from the [[AUR]]. See more details [[https://bbs.archlinux.org/viewtopic.php?id=180282 here]] }}<br />
Alternatively, you can modify your [[.xprofile]]:<br />
{{hc|~/.xprofile|touchegg &}}</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Touchegg&diff=355229Touchegg2015-01-03T23:03:07Z<p>Ilfugiuliopascal: /* Gnome Shell */ improve style</p>
<hr />
<div>[[Category:Applications]]<br />
[[ja:touchegg]]<br />
[https://code.google.com/p/touchegg/ Touchegg] is a multitouch gesture program, that runs as a user in the background, and adds multitouch support to window managers.<br />
<br />
==installation==<br />
Base package: {{AUR|touchegg}} in the [[AUR]]. Alternatively, it is also available {{aur|touchegg-svn}}.<br />
<br />
You may want to install also a GUI configuration editor, Touchegg-GCE [https://github.com/Raffarti/Touchegg-gce]: {{AUR|touchegg-gce-git}} in the [[AUR]].<br />
<br />
==configuration==<br />
The configuration file is found in {{ic|$HOME/.config/touchegg/touchegg.conf}}.<br />
<br />
It is a basic XML file that defines various gestures. Please note that at this time <code>TAP_AND_HOLD</code>, <code>PINCH</code>, and <code>ROTATE</code>, do not appear to work.<br />
<br />
The list of triggers can be found [http://code.google.com/p/touchegg/wiki/AllGestures here]<br />
<br />
The list of actions can be found [http://code.google.com/p/touchegg/wiki/AllActions here]<br />
<br />
====Gnome Shell====<br />
Very basic so far. This should give you basic functionality. Hopefully we can update this for complete application support.<br />
<br />
edit <code>$HOME/.config/touchegg/touchegg.conf</code><br />
add this:<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="1" direction="ALL"><br />
<action type="DRAG_AND_DROP">BUTTON=1</action><br />
</gesture><br />
}}<br />
<br />
and then edit this entry:<br />
<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="2" direction="ALL"><br />
<action type="SCROLL">SPEED=7:INVERTED=<b>true</b></action><br />
</gesture><br />
}}<br />
<br />
=====Start on login=====<br />
# Hit <code>alt-f2</code>;<br />
# type <code>gnome-session-properties</code>;<br />
# hit <code>add</code>;<br />
# in the box labeled "Command" type <code>touchegg</code>. Fill in "Name" and "Label" as you choose;<br />
# hit <code>OK</code>.<br />
<br />
{{note| {{ic|gnome-session-properties}} has been removed from {{ic|gnome 3.12}}. Currently, you can install {{aur|gnome-session-properties}} from the [[AUR]]. See more details [[https://bbs.archlinux.org/viewtopic.php?id=180282 here]] }}<br />
Alternatively, you can modify your [[.xprofile]]:<br />
{{hc|~/.xprofile|touchegg &}}</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Touchegg&diff=355228Touchegg2015-01-03T23:00:02Z<p>Ilfugiuliopascal: /* Gnome Shell */ gnome-session-properties no longer supported</p>
<hr />
<div>[[Category:Applications]]<br />
[[ja:touchegg]]<br />
[https://code.google.com/p/touchegg/ Touchegg] is a multitouch gesture program, that runs as a user in the background, and adds multitouch support to window managers.<br />
<br />
==installation==<br />
Base package: {{AUR|touchegg}} in the [[AUR]]. Alternatively, it is also available {{aur|touchegg-svn}}.<br />
<br />
You may want to install also a GUI configuration editor, Touchegg-GCE [https://github.com/Raffarti/Touchegg-gce]: {{AUR|touchegg-gce-git}} in the [[AUR]].<br />
<br />
==configuration==<br />
The configuration file is found in {{ic|$HOME/.config/touchegg/touchegg.conf}}.<br />
<br />
It is a basic XML file that defines various gestures. Please note that at this time <code>TAP_AND_HOLD</code>, <code>PINCH</code>, and <code>ROTATE</code>, do not appear to work.<br />
<br />
The list of triggers can be found [http://code.google.com/p/touchegg/wiki/AllGestures here]<br />
<br />
The list of actions can be found [http://code.google.com/p/touchegg/wiki/AllActions here]<br />
<br />
====Gnome Shell====<br />
Very basic so far. This should give you basic functionality. Hopefully we can update this for complete application support.<br />
<br />
edit <code>$HOME/.config/touchegg/touchegg.conf</code><br />
add this:<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="1" direction="ALL"><br />
<action type="DRAG_AND_DROP">BUTTON=1</action><br />
</gesture><br />
}}<br />
<br />
and then edit this entry:<br />
<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="2" direction="ALL"><br />
<action type="SCROLL">SPEED=7:INVERTED=<b>true</b></action><br />
</gesture><br />
}}<br />
<br />
Then have touchegg start on login:<br />
1. hit <code>alt-f2</code><br />
2. type <code>gnome-session-properties</code><br />
3. hit <code>add</code><br />
4. In the box labeled "Command" type <code>touchegg</code>. Fill in "Name" and "Label" as you choose.<br />
5. Hit <code>OK</code><br />
<br />
{{note| {{ic|gnome-session-properties}} has been removed from {{ic|gnome 3.12}}. Currently, you can install {{aur|gnome-session-properties}} from the [[AUR]]. See more details [[https://bbs.archlinux.org/viewtopic.php?id=180282 here]] }}<br />
Alternatively, you can modify your [[.xprofile]]:<br />
{{hc|~/.xprofile|touchegg &}}</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Touchegg&diff=355226Touchegg2015-01-03T22:47:57Z<p>Ilfugiuliopascal: /* installation */ add touchegg-svn</p>
<hr />
<div>[[Category:Applications]]<br />
[[ja:touchegg]]<br />
[https://code.google.com/p/touchegg/ Touchegg] is a multitouch gesture program, that runs as a user in the background, and adds multitouch support to window managers.<br />
<br />
==installation==<br />
Base package: {{AUR|touchegg}} in the [[AUR]]. Alternatively, it is also available {{aur|touchegg-svn}}.<br />
<br />
You may want to install also a GUI configuration editor, Touchegg-GCE [https://github.com/Raffarti/Touchegg-gce]: {{AUR|touchegg-gce-git}} in the [[AUR]].<br />
<br />
==configuration==<br />
The configuration file is found in {{ic|$HOME/.config/touchegg/touchegg.conf}}.<br />
<br />
It is a basic XML file that defines various gestures. Please note that at this time <code>TAP_AND_HOLD</code>, <code>PINCH</code>, and <code>ROTATE</code>, do not appear to work.<br />
<br />
The list of triggers can be found [http://code.google.com/p/touchegg/wiki/AllGestures here]<br />
<br />
The list of actions can be found [http://code.google.com/p/touchegg/wiki/AllActions here]<br />
<br />
====Gnome Shell====<br />
Very basic so far. This should give you basic functionality. Hopefully we can update this for complete application support.<br />
<br />
edit <code>$HOME/.config/touchegg/touchegg.conf</code><br />
add this:<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="1" direction="ALL"><br />
<action type="DRAG_AND_DROP">BUTTON=1</action><br />
</gesture><br />
}}<br />
<br />
and then edit this entry:<br />
<br />
{{bc|1=<br />
<gesture type="DRAG" fingers="2" direction="ALL"><br />
<action type="SCROLL">SPEED=7:INVERTED=<b>true</b></action><br />
</gesture><br />
}}<br />
<br />
then have touchegg start on login:<br />
1. hit <code>alt-f2</code><br />
2. type <code>gnome-session-properties</code><br />
3. hit <code>add</code><br />
4. In the box labeled "Command" type <code>touchegg</code>. Fill in "Name" and "Label" as you choose.<br />
5. Hit <code>OK</code></div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355225Lenovo IdeaPad Yoga 2 Pro2015-01-03T22:45:07Z<p>Ilfugiuliopascal: /* Multitouch gestures */ minor edit</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Multitouch gestures===<br />
You have to install [[Touchegg]] from the [[AUR]] in order to enable multitouch gestures. Optionally, you can install {{aur|touchegg-gce-git}} as a graphical front-end. You can start {{ic|touchegg}} at boot editing your [[.xprofile]]:<br />
{{hc|~/.xprofile|touchegg &}}<br />
<br />
{{Tip| If you use gnome shell you should start {{ic|touchegg}} before it, in order to avoid conflicts.}}<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355224Lenovo IdeaPad Yoga 2 Pro2015-01-03T22:42:50Z<p>Ilfugiuliopascal: /* Touchscreen */ Add multitouch gestures section</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Multitouch gestures===<br />
You have to install {{aur|touchegg}} from the [[AUR]] in order to enable multitouch gestures. Optionally, you can install {{aur|touchegg-gce-git}} as a graphical front-end. You can start {{ic|touchegg}} at boot editing your {{ic|.xprofile}}:<br />
{{hc|~/.xprofile|touchegg &}}<br />
<br />
{{Tip| If you use gnome shell you should start {{ic|touchegg}} before it, in order to avoid conflicts.}}<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355212Lenovo IdeaPad Yoga 2 Pro2015-01-03T21:11:14Z<p>Ilfugiuliopascal: /* Backlight */ Add info on new kernels</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
{{Tip|If you are using gnome-shell, you might want to use {{aur|touchegg-svn}} from the AUR, instead of {{aur|touchegg}}: the former fixes issues related to gnome-shell desktop and upper pane.}}<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
With newer kernels (I am currently using {{ic|3.17.6-1-ARCH}}) backlight works out-of-the-box.<br />
<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be manually set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355211Lenovo IdeaPad Yoga 2 Pro2015-01-03T21:07:27Z<p>Ilfugiuliopascal: /* Keyboard special keys */ Make a table and add some other info abot the fn keys</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra keyboard keys in Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
{{note| BIOS has a setting to flip the behavior of the FN key.}}<br />
<br />
{| class="wikitable"<br />
! Keys!! Function !! X sees<br />
|-<br />
| {{ic|Fn+F1}} || Audio mute/unmute || XF86AudioMute<br />
|-<br />
| {{ic|Fn+F2}} || Audio volume down || XF86AudioLowerVolume<br />
|-<br />
| {{ic|Fn+F3}} || Audio volume up || XF86AudioRaiseVolume<br />
|-<br />
| {{ic|Fn+F4}} || Close application || {{ic|Alt_L+F4}}<br />
|-<br />
| {{ic|Fn+F5}} || Refresh page || {{ic|F5}}<br />
|-<br />
| {{ic|Fn+F6}} || Disable Touchpad || ?<br />
|-<br />
| {{ic|Fn+F7}} || Airplane mode || ?<br />
|-<br />
| {{ic|Fn+F8}} || Unknown || {{ic|Alt_L+Tab}}<br />
|-<br />
| {{ic|Fn+F9}} || Turn off LCD || ?<br />
|-<br />
| {{ic|Fn+F10}} || Toggle display || {{ic|Super+p}}<br />
|-<br />
| {{ic|Fn+F11}} || Dim LCD backlight || XF86MonBrightnessDown<br />
|-<br />
| {{ic|Fn+F12}} || Brighten LCD backlight || XF86MonBrightnessUp<br />
|}<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
{{Tip|If you are using gnome-shell, you might want to use {{aur|touchegg-svn}} from the AUR, instead of {{aur|touchegg}}: the former fixes issues related to gnome-shell desktop and upper pane.}}<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355125Lenovo IdeaPad Yoga 2 Pro2015-01-03T14:02:59Z<p>Ilfugiuliopascal: /* Touchscreen */ Improve the style of the section.</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
BIOS has a setting to flip the behavior of the FN key.<br />
<br />
fn+F1 XF86AudioMute<br />
fn+F2 XF86AudioLowerVolume<br />
fn+F3 XF86AudioRaiseVolume<br />
fn+F4 Alt_L+<F4><br />
fn+F5 <F5><br />
fn+F6 n/a<br />
fn+F7 n/a<br />
fn+F8 Alt_L+Tab<br />
fn+F9 n/a?<br />
fn+F10 super_L+p<br />
fn+F11 XF86MonBrightnessDown<br />
fn+F12 XF86MonBrightnessUp<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the {{ic|usbtouchscreen}} module is not loaded.<br />
<br />
===Touchscreen button===<br />
The touchscreen button with a Windows logo is mapped as {{ic|Super}}. However, {{ic|key_down}} and {{ic|key_up}} are generated simultaneously on touch release. The haptic feedback (vibration) when touching this button is currently not controllable via software.<br />
<br />
{{Tip|If you are using gnome-shell, you might want to use {{aur|touchegg-svn}} from the AUR, instead of {{aur|touchegg}}: the former fixes issues related to gnome-shell desktop and upper pane.}}<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355123Lenovo IdeaPad Yoga 2 Pro2015-01-03T13:51:15Z<p>Ilfugiuliopascal: arrange headings according to the wiki standards</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
==The ideapad_laptop module==<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
==Keyboard and other hardware keys==<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
===Keyboard special keys===<br />
BIOS has a setting to flip the behavior of the FN key.<br />
<br />
fn+F1 XF86AudioMute<br />
fn+F2 XF86AudioLowerVolume<br />
fn+F3 XF86AudioRaiseVolume<br />
fn+F4 Alt_L+<F4><br />
fn+F5 <F5><br />
fn+F6 n/a<br />
fn+F7 n/a<br />
fn+F8 Alt_L+Tab<br />
fn+F9 n/a?<br />
fn+F10 super_L+p<br />
fn+F11 XF86MonBrightnessDown<br />
fn+F12 XF86MonBrightnessUp<br />
<br />
===Hardware keys on right side===<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the 'usbtouchscreen' module is not loaded.<br />
<br />
===Touchscreen button===<br />
Super_L, but a fake one! `key_down` and `key_up` are generated simultaneously on touch release.<br />
<br />
The haptic feedback (vibration) when touching the Windows button is currently not controllable via software.<br />
<br />
{{Tip|If you are using gnome-shell, you might want to use '''touchegg-svn''' from AUR, instead of '''touchegg''', as touchegg-svn fixes issues related to gnome-shell desktop and upper pane.}}<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
==ACPI==<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
===Touchpad===<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
===Backlight===<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
===Battery===<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
==Graphics==<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
==Rotation/Conversion==<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
==See also==<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355121Lenovo IdeaPad Yoga 2 Pro2015-01-03T13:45:39Z<p>Ilfugiuliopascal: /* Touchscreen */ Add fix of a problem</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
=The ideapad_laptop module=<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
=Hardware Keys / User Input=<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
==Keyboard special keys==<br />
BIOS has a setting to flip the behavior of the FN key.<br />
<br />
fn+F1 XF86AudioMute<br />
fn+F2 XF86AudioLowerVolume<br />
fn+F3 XF86AudioRaiseVolume<br />
fn+F4 Alt_L+<F4><br />
fn+F5 <F5><br />
fn+F6 n/a<br />
fn+F7 n/a<br />
fn+F8 Alt_L+Tab<br />
fn+F9 n/a?<br />
fn+F10 super_L+p<br />
fn+F11 XF86MonBrightnessDown<br />
fn+F12 XF86MonBrightnessUp<br />
<br />
==Hardware keys on right side==<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the 'usbtouchscreen' module is not loaded.<br />
<br />
===Touchscreen button===<br />
Super_L, but a fake one! `key_down` and `key_up` are generated simultaneously on touch release.<br />
<br />
The haptic feedback (vibration) when touching the Windows button is currently not controllable via software.<br />
<br />
{{Tip|If you are using gnome-shell, you might want to use '''touchegg-svn''' from AUR, instead of '''touchegg''', as touchegg-svn fixes issues related to gnome-shell desktop and upper pane.}}<br />
<br />
===Touchscreen stops working after suspension===<br />
Sometimes touchscreen stops working after resuming from suspension mode. You should be able to fix the problem reloading the {{ic|usbhid}} and {{ic|usbtouchscreen}} kernel modules:<br />
<br />
# modprobe -r usbhid usbtouchscreen<br />
<br />
=ACPI=<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
==Touchpad==<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
==Backlight==<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
==Battery==<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
=Graphics=<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
=Rotation/Conversion=<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
=See also=<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Lenovo_IdeaPad_Yoga_2_Pro&diff=355120Lenovo IdeaPad Yoga 2 Pro2015-01-03T13:37:52Z<p>Ilfugiuliopascal: Bluetooth works</p>
<hr />
<div>{{Poor writing|Missing templates, poorly organized}}<br />
<br />
[[Category:Lenovo]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Graphics || style="color:green" | '''Working''' || xf86-video-intel<br />
|-<br />
| Wireless || style="color:green" | '''Working*''' || iwlwifi<br />
|-<br />
| Audio || style="color:green" | '''Working''' || snd_hda_intel<br />
|-<br />
| Touchscreen || style="color:green" | '''Working''' || usbtouchscreen<br />
|-<br />
| Accelerometer || style="color:red" | '''Not Working''' ||<br />
|-<br />
| Touchpad || style="color:green" | '''Working''' || xf86-input-synaptics<br />
|-<br />
| Camera || style="color:green" | '''Working''' ||<br />
|-<br />
| Card Reader || style="color:blue" | '''Unknown''' ||<br />
|-<br />
| Bluetooth || style="color:green" | '''Working''' ||<br />
|}<br />
<br />
=The ideapad_laptop module=<br />
<br />
Several problems come up if the ideapad_laptop module is in use. Namely, it blocks the network card and generates a massive stream of warning from the USB subsystem such as:<br />
<br />
Dec 5 08:40:44 localhost kernel: [ 290.632613] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.735110] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.837534] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 290.940070] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
Dec 5 08:40:44 localhost kernel: [ 291.042570] xhci_hcd 0000:00:14.0: ep 0x81 - asked for 15360 bytes, 15117 bytes untransferred<br />
<br />
You can silence these in the short run by running:<br />
<br />
# dmesg -D<br />
<br />
And you can unblock the wireless card by running:<br />
<br />
# rfkill unblock wlan<br />
<br />
However, in the long term, you will probably want to blacklist the {{ic|ideapad_laptop}} driver so that neither of these occur in the first place. I am yet to find a disadvantage to doing so.<br />
<br />
=Hardware Keys / User Input=<br />
To access boot menu or BIOS settings, you must use the alternate power button, next to the standard one.<br />
<br />
No keypad available at all.<br />
<br />
==Keyboard special keys==<br />
BIOS has a setting to flip the behavior of the FN key.<br />
<br />
fn+F1 XF86AudioMute<br />
fn+F2 XF86AudioLowerVolume<br />
fn+F3 XF86AudioRaiseVolume<br />
fn+F4 Alt_L+<F4><br />
fn+F5 <F5><br />
fn+F6 n/a<br />
fn+F7 n/a<br />
fn+F8 Alt_L+Tab<br />
fn+F9 n/a?<br />
fn+F10 super_L+p<br />
fn+F11 XF86MonBrightnessDown<br />
fn+F12 XF86MonBrightnessUp<br />
<br />
==Hardware keys on right side==<br />
From hinge to front:<br />
XF86AudioRaiseVolume<br />
XF86AudioLowerVolume<br />
Super_L+o<br />
<br />
==Touchscreen==<br />
Touchscreen USB device seems to come and go if the 'usbtouchscreen' module is not loaded.<br />
<br />
===Touchscreen button===<br />
Super_L, but a fake one! `key_down` and `key_up` are generated simultaneously on touch release.<br />
<br />
The haptic feedback (vibration) when touching the Windows button is currently not controllable via software.<br />
<br />
{{Tip|If you are using gnome-shell, you might want to use '''touchegg-svn''' from AUR, instead of '''touchegg''', as touchegg-svn fixes issues related to gnome-shell desktop and upper pane.}}<br />
<br />
=ACPI=<br />
I modified ''/etc/acpi/default.sh'' to allow for some debugging and additional features (see below):<br />
#!/bin/sh<br />
set $*<br />
group=${1%%/*}<br />
device=$2<br />
id=$3<br />
value=$4<br />
log_unhandled() {<br />
logger "ACPI event unhandled: $*"<br />
}<br />
case "$group" in<br />
button)<br />
case "$action" in<br />
power)<br />
/etc/acpi/actions/powerbtn.sh<br />
;;<br />
lid)<br />
/etc/acpi/actions/lid.sh<br />
;;<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
ac_adapter)<br />
case "$value" in<br />
*) log_unhandled $* ;;<br />
esac<br />
;;<br />
*) echo $* > /dev/tty5<br />
log_unhandled $* ;;<br />
esac<br />
<br />
<br />
==Touchpad==<br />
The touchpad sends random input from time to time, especially when lid is closed. If you like your computer to keep running when the lid is closed, you may want to disable the touchpad with ACPI events:<br />
;/etc/acpi/actions/lid.sh<br />
#!/bin/bash<br />
export DISPLAY=:0<br />
if grep closed /proc/acpi/button/lid/LID0/state<br />
then<br />
synclient TouchpadOff=1 2>/dev/tty5 && echo "lid closed, disabling touchpad" >/dev/tty5<br />
else<br />
synclient TouchpadOff=0 2>/dev/tty5 && echo "lid open, eênabling touchpad" >/dev/tty5<br />
fi<br />
Of course, the echo statement is optional and for debug purposes.<br />
<br />
==Backlight==<br />
"old" (ref needed) kernels require boot argument<br />
acpi_backlight=vendor<br />
<br />
Screen backlight brightness can be set with<br />
echo $VAL > /sys/class/backlight/intel_backlight/brightnes<br />
with $VAL between 0 and 937<br />
<br />
==Battery==<br />
Battery info can be accessed with<br />
ls /sys/class/power_supply/BAT1/*<br />
Unfortunately, the values obtained there have no units (older Lenovo products had rates in mA, battery voltage, etc.)<br />
<br />
=Graphics=<br />
<br />
Steam crashes trying to run games complaining about missing i965 module. It seems some applications treat it as accelerated, and some do not.<br />
<br />
Resolution seems to be not so well supported by some desktop environments/window managers. XFCE and fvwm seem to work fine.<br />
<br />
Users may wish to boost font-sizes, as the HiDPI screen can be hard to read in some settings.<br />
<br />
=Rotation/Conversion=<br />
<br />
You can easily rotate screen with xrandr, however it does not rotate touchscreen/touchpad input which makes it fairly awkward to use. There is a [https://github.com/wolneykien/xrandr-align project] attempting to address this. Keyboard hardware-disables in tablet mode, but touchpad is still active which needs to be addressed. No ACPI or keycode signals appear to be emitted for the various screen rotation states.<br />
<br />
=See also=<br />
* The LinLap site has some good information - see [[http://www.linlap.com/lenovo_ideapad_yoga_2_pro]]<br />
* a good [http://keithcu.com/wordpress/?p=3270 Review of Arch Linux on a HiDPI Lenovo Yoga 2 Pro] by KeithCU with useful comments</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=XWiimote&diff=354520XWiimote2014-12-30T17:01:03Z<p>Ilfugiuliopascal: /* Prerequisites */</p>
<hr />
<div>[[Category:Other hardware]]<br />
This article is about the Nintendo Wii Remote Linux kernel driver. This driver is part of upstream Linux since version 3.1. It is an easy to use drop-in replacement for the older user-space drivers like [[Wiimote|cwiid]].<br />
You can use your Wii Remote for all purposes with this driver, for instance as an [[Xorg|X]] input device or joystick controller for your Linux games.<br />
<br />
{{Note|The XWiimote tools are still experimental. Connecting and managing your Wii Remote works well and there is a driver to use the Wii Remote as X11 input, but extended features may still be missing.}}<br />
<br />
==Prerequisites==<br />
* [[Bluetooth]]<br />
* {{AUR|xwiimote}}<br />
* xwiimote kernel driver<br />
* Wii Remote hardware<br />
<br />
The most important software required is [[Bluetooth]], please make sure you have read the [[Bluetooth|relative wiki page]] to configure it before proceeding.<br />
<br />
'''NOTE:''' most recent bluez package in Arch Linux includes the wiimote plugin, if you are using an older version please see [[#BlueZ does not include the wiimote plugin|Troubleshooting BlueZ]].<br />
<br />
The user-space utilities are available in [[AUR]] {{AUR|xwiimote}} package; there is also a git-package {{AUR|xwiimote-tools-git}} if you want the most recent development revision.<br />
<br />
The kernel driver (module {{ic|hid-wiimote}}) is part of upstream Linux since version 3.1 and it's ever since already included in Arch Linux kernel. However, the module could need to be loaded:<br />
<br />
# modprobe hid-wiimote<br />
<br />
Lastly you will need a Wii Remote, this can include (although, are not required) the Nunchuk and Classic Controller attachments.<br />
<br />
=== hid-wiimote kernel module ===<br />
If you are using a custom kernel, you can enable the {{ic|hid-wiimote}} module with {{ic|CONFIG_HID_WIIMOTE}} and the dependencies {{ic|CONFIG_INPUT_FF_MEMLESS}}, {{ic|CONFIG_LEDS_CLASS}}, {{ic|CONFIG_POWER_SUPPLY}} and {{ic|CONFIG_BT_HIDP}} embedded in your kernel or as modules, previously loaded.<br />
Starting with kernel version 3.3 there is an additional config option {{ic|CONFIG_HID_WIIMOTE_EXT}} which is enabled by default. It controls whether wiimote extensions like Nunchuck and Classic Controller should be supported.<br />
<br />
==Connect the Wii Remote==<br />
<br />
You can connect to your Wii Remote like any other Bluetooth device. See the [[Bluetooth|Bluetooth article]] about information on pairing Bluetooth devices. The Wii Remote does not need special handling anymore. The BlueZ wiimote plugin handles all peculiarities in the background for you.<br />
<br />
The Wii Remote can be put into discoverable mode by pressing the red sync-button behind the battery cover on the back. The Wii Remote will stay in discoverable mode for 20s. You can also hold the 1+2 buttons to put the Wii Remote into discoverable state. However, the first method works more reliably!<br />
<br />
If you are asked for PIN input while bonding the devices, then your BlueZ bluetoothd daemon does not include the wiimote plugin. See [[#BlueZ does not include the wiimote plugin|Troubleshooting BlueZ]] for more information. If this does not help, you can still connect to your wiimote without pairing/bonding (i.e. not using authentication with a PIN). This should work with any BlueZ version. See [[#I cannot connect my wiimote|Troubleshooting Pairing]] if you still cannot connect your wiimote.<br />
<br />
==Device Handling==<br />
<br />
If your Wii Remote is connected, it will appear with several input devices inside {{ic|/dev/input/eventX}}. You can list all Wii Remotes with:<br />
<br />
$ ls /sys/bus/hid/devices<br />
<br />
Then you can get additional device details with:<br />
<br />
$ ls /sys/bus/hid/devices/<devid>/<br />
<br />
The default mapping for the input-keys of the Wii Remotes are not very useful. User-space applications exist that re-map the Wii Remote input to more useful keys/actions [http://github.com/dvdhrm/xwiimote] - available in AUR {{AUR|xwiimote}}. If you installed this package you can test your connected Wii Remotes with the {{ic|xwiishow}} tool:<br />
<br />
This will list all connected Wii Remotes:<br />
<br />
$ xwiishow list<br />
<br />
If this shows a path to a Wii Remote (lets say {{ic|/sys/bus/hid/devices/<did>}}) then you can test the device with:<br />
<br />
$ xwiishow /sys/bus/hid/devices/<did><br />
<br />
Or use the index of the listed device:<br />
<br />
$ xwiishow 1<br />
<br />
This will display a picture of the Wii Remote and notify you if buttons are pressed. You can use the {{ic|'r'}} key to enable/disable the rumble motor. Press {{ic|'q'}} to quit the application. You might need to be root to use these tools.<br />
<br />
===X.Org Input Driver===<br />
<br />
There is an X.Org input driver [http://github.com/dvdhrm/xf86-input-xwiimote] available in AUR {{AUR|xf86-input-xwiimote}} which automatically provides an input device to your X clients. Install it and read the related man-page for more information:<br />
<br />
$ man xorg-xwiimote<br />
<br />
===Infrared Sources===<br />
<br />
The Wii Remote includes an infrared camera. To use this camera as a pointer input device, you need an IR-rack as an infrared source. Possible infrared sources are:<br />
<br />
* Nintendo Wii Sensor Bar<br />
* Wireless sensor bar - check eBay!<br />
* Small candles (should have about 30cm distance)<br />
* Home made sensor bar ([http://doctabu.livejournal.com/64758.html])<br />
<br />
{{Note| xf86-input-xwiimote has support for mouse-emulation via IR using the {{ic|Option "MotionSource" "ir" }}}} <br />
There is currently no user-space application that enables mouse-emulation with the IR-sensor. If you need that, you should consider using the no longer supported [[Wiimote|cwiid]] approach. However, the xwiimote tools are under heavy development and will soon support IR mouse-emulation, too.<br />
<br />
==Troubleshooting==<br />
<br />
===The input mapping is very weird===<br />
<br />
The default mapping maps the Wii Remote keys to the the key-constants which resemble the Wii Remote's buttons best. This mapping is quite useless by default. To get better mappings, use the [[#Device Handling|xwiimote userspace tools]].<br />
<br />
===BlueZ does not include the wiimote plugin===<br />
<br />
Upstream BlueZ includes the ''optional'' wiimote plugin since version 4.96. However, it must be enabled explicitely with {{ic|--enable-wiimote}} during compilation. The archlinux package includes the wiimote plugin since {{ic|bluez-4.96-3}}. If you are unsure whether your package includes the wiimote plugin, use:<br />
<br />
grep wiimote $(which bluetoothd)<br />
<br />
This should say:<br />
<br />
Binary file /usr/sbin/bluetoothd matches<br />
<br />
{{Note|with bluez 5.5, this file resides in {{ic|/usr/lib/bluetooth}} on ArchLinux. Use the below to check:<br />
<br />
{{bc|grep wiimote /usr/lib/bluetooth/bluetoothd}}<br />
}}<br />
<br />
If this matches, then your BlueZ includes the wiimote plugin and no more user-interaction is needed. If this does not match, you need to enable it yourself or work without it. If you do not want to compile your own bluez package, then you can use the wiimote without this plugin by connecting without pairing/bonding. For instance, when using {{ic|blueman}} or {{ic|gnome-bluetooth}} you need to select {{ic|"Proceed without pairing"}} when adding a new device.<br />
<br />
If you want to compile the module on your own, then add {{ic|--enable-wiimote}} to your configure flags and proceed as usual. See the bluez PKGBUILD for further information.<br />
<br />
===I cannot connect my wiimote===<br />
<br />
The BlueZ packages includes a special wiimote plugin since version {{ic|4.96}} which handles all Wii Remote peculiarities for you. If you cannot pair your Wii Remote like any other device, then you should try connecting without pairing/bonding (i.e. not using authentication with a PIN). If this still does not work, please report your issue to the upstream developers at [http://www.github.com/dvdhrm/xwiimote/issues XWiimote@GitHub].<br />
<br />
Please always use the red sync-button behind the battery cover on the back of the Wii Remote for troubleshooting. This works more reliably than holding the 1+2 buttons.<br />
<br />
The Auto-Reconnect feature allows the Wii Remote to reconnect to its last connected host when a key is pressed. This means you do not need to connect your Wii Remote manually each time. However, the Auto-Reconnect feature only works if you paired your Wii-Remote. Connecting without the wiimote plugin will not enable Auto-Reconnect.<br />
<br />
===Cannot use Wiimote in Dolphin-emu after pairing with xwiimote===<br />
Dolphin uses its own driver so pressing the resync button on the wiimote while dolphin is running should resync the wiimote to dolphin instead of the xwiimote.<br />
<br />
===My Wii Remote is still not working===<br />
<br />
The XWiimote software stack is actively developed. Please report your problems at [http://www.github.com/dvdhrm/xwiimote/issues XWiimote@GitHub].<br />
<br />
There are also other projects which provide Wii Remote support for linux. See the [[Wiimote|Wii Remote article]] for the cwiid project.<br />
<br />
==See also==<br />
* [[Wiimote]]: Cwiid: An older software stack for linux which provides partial Wii Remote support<br />
* [http://dvdhrm.wordpress.com/2012/02/26/xf86-input-xwiimote-0-2/]: Developer blog about Wii Remotes</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=333087Nextcloud2014-08-30T11:26:52Z<p>Ilfugiuliopascal: /* Sync Clients */ Add syncing calendar and contacts with thunderbird section</p>
<hr />
<div>[[Category:Web Server]]<br />
[[fr:Owncloud]]<br />
[[ja:Owncloud]]<br />
{{lowercase title}}<br />
{{Related articles start}}<br />
{{Related|LAMP}}<br />
{{Related|Nginx}}<br />
{{Related|OpenSSL}}<br />
{{Related articles end}}<br />
From [[Wikipedia:ownCloud|Wikipedia]]:<br />
: ''ownCloud is a software suite that provides a location-independent storage area for data (cloud storage).''<br />
The ownCloud installation and configuration mainly depends on what web server and database you decide to run. Currently the wiki discusses [[#Apache configuration]] and [[#Nginx + uwsgi_php configuration]].<br />
== First steps ==<br />
<br />
ownCloud needs a [[:Category:Web_Server|web server]] with [[PHP]] and a [[:Category:Database_management_systems|database]]. For instance, a LAMP stack will work fine. See [[LAMP]] for how to set it up.<br />
<br />
== Installation ==<br />
<br />
[[pacman|Install]] {{Pkg|owncloud}} from the [[official repositories]]. Alternatively see the packages available in the [[Arch User Repository]]: [https://aur.archlinux.org/packages.php?K=owncloud].<br />
<br />
Uncomment the following '''required''' extensions in {{ic|/etc/php/php.ini}}:<br />
gd.so<br />
iconv.so<br />
xmlrpc.so<br />
zip.so<br />
<br />
It is also [http://doc.owncloud.org/server/7.0/admin_manual/installation/installation_source.html#prerequisites recommended] to install {{Pkg|php-intl}}, {{Pkg|php-mcrypt}} and uncomment the following extensions:<br />
bz2.so<br />
curl.so<br />
intl.so<br />
mcrypt.so<br />
openssl.so<br />
<br />
For enhanced performance, you may install ''either'':<br />
* {{Pkg|php-acpu}}: only provides user data caching. Enable it by removing the comment in {{ic|/etc/php/conf.d/acpu.ini}}. Then for opcode caching use the [http://www.php.net/manual/de/book.opcache.php opcache extension]: uncomment {{ic|1=zend_extension=opcache.so}} in {{ic|/etc/php/php.ini}}.<br />
* {{Pkg|php-xcache}}: development version which provides both an opcode and user data cache. Uncomment it in {{ic|/etc/php/conf.d/xcache.ini}} after installation.<br />
<br />
==== Database support ====<br />
Depending on which database backend you are going to use, uncomment both of the following two extensions in {{ic|/etc/php/php.ini}}:<br />
{| class="wikitable"<br />
!SQLite!!MySQL!!PostgreSQL<br />
|-<br />
|{{bc|pdo_sqlite.so<br />
sqlite3.so}}<br />
|{{bc|pdo_mysql.so<br />
mysql.so}}<br />
|{{bc|pdo_pgsql.so<br />
pgsql.so}}<br />
|-<br />
|}<br />
<br />
{{note|1=When using [[MySQL]] you need {{ic|mysql.so}}, even though it's deprecated. As of July 2014 (ownCloud 7.0) {{ic|mysqli.so}} is not supported.[http://doc.owncloud.org/server/7.0/admin_manual/configuration/configuration_database.html][https://forum.owncloud.org/viewtopic.php?f=26&t=21534]}}<br />
Don't forget to install the appropriate php-module for the database. In the PostgreSQL case thats {{Pkg|php-pgsql}} or for SQLite {{Pkg|php-sqlite}}.<br />
<br />
==== Exif support ====<br />
Additionally enable exif support by installing {{Pkg|exiv2}} from the [[official repositories]] and uncommenting the {{ic|exif.so}} extension in {{ic|php.ini}}.<br />
<br />
== Docker ==<br />
<br />
A quick and safe alternative to installing and configuring ownCloud on your own is to use a [[Docker]] linux container. You can find several images of fully working LAMP stack with pre-installed ownCloud in the [https://index.docker.io/search?q=ownCloud Docker repositories]. Docker containers are generally safer than a chroot environment and the overhead is very low, ownCloud in docker works smoothly even on quite old machines. The whole setup including installing Docker and ownCloud image is considerably easier and quicker than a native installation.<br />
<br />
== Apache configuration ==<br />
<br />
=== Installation ===<br />
<br />
Set up the [[LAMP]] stack. <br />
<br />
Copy the Apache configuration file to its configuration directory:<br />
# cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf<br />
<br />
And include it at the bottom of {{ic|/etc/httpd/conf/httpd.conf}}:<br />
Include conf/extra/owncloud.conf<br />
<br />
OwnCloud comes with its own WebDAV implementation enabled, which might conflict with the one shipped with Apache. OwnCloud [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 recommends] to disable {{ic|mod_dav}} and {{ic|mod_dav_fs}} in {{ic|/etc/httpd/conf/httpd.conf}}.<br />
<br />
Make sure the web server can write to the ownCloud directory:<br />
# chown -R http:http /usr/share/webapps/owncloud/<br />
<br />
Now restart Apache ({{ic|httpd.service}}).<br />
<br />
Open http://localhost/ in your browser. You should now be able to create a user account and follow the installation wizard.<br />
<br />
==== Running ownCloud in a subdirectory ====<br />
<br />
By including the default {{ic|owncloud.conf}} in {{ic|httpd.conf}}, ownCloud will take control of port 80 and your localhost domain. <br />
<br />
If you would like to have ownCloud run in a subdirectory, then edit the {{ic|/etc/httpd/conf/extra/owncloud.conf}} you included and comment out the {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} part of the include file.<br />
<br />
=== Filling ownCloud with data ===<br />
<br />
==== WebDAV ====<br />
<br />
Always use [[WebDAV]] or the web interface to add new files to your ownCloud. Otherwise they will not show up correctly, as they do not get indexed right.<br />
No further configuration is necessary to enable WebDAV uploads in ownCloud. <br />
<br />
Consider installing and enabling [[php-apc]] to speed up WebDAV.<br />
<br />
===== Mounting your ownCloud with davfs2 =====<br />
<br />
If you want to mount your ownCloud permanently install {{Pkg|davfs2}} (as described in [[Davfs]]) first.<br />
<br />
Considering your ownCloud were at {{ic|https://own.example.com}}, your WebDAV URL would be {{ic|https://own.example.com/remote.php/webdav}} (as of ownCloud 6.0).<br />
<br />
To mount your ownCloud, use (only possible as root):<br />
<br />
$ mount https://own.example.com/remote.php/webdav /path/to/mount<br />
<br />
You can also create an entry for this in {{ic|/etc/fstab}}<br />
<br />
{{hc|/etc/fstab|<br />
https://own.example.com/remote.php/webdav /path/to/mount rw,user,noauto 0 0<br />
}}<br />
{{Tip|In order to allow automount you can also store your username (and password if you like) in a file as described in [[Davfs#Mounting as regular user]]}}<br />
<br />
==== SABnzbd ====<br />
<br />
When using [[SABnzbd]], you might want to set<br />
folder_rename 0<br />
in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.<br />
<br />
==== Big files ====<br />
{{out of date|Does this still apply?}}<br />
WebDAV isn't suitable for big files, because it fills up all the RAM and CPU.<br />
<br />
With the current version, it looks like, there is no good way of copying huge amounts of data to your ownCloud.<br />
<br />
Here's a Workaround:<br />
<br />
Copy the files directly to your ownCloud and do a full re-scan of your database (you could use the [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] add-on for example).<br />
<br />
But beware that this will not work as easily in the future, when end-to-end encryption gets added to ownCloud (this is a planned feature).<br />
<br />
=== Important notes ===<br />
<br />
* When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the ownCloud client or webdav might fail.<br />
<br />
* If you are planning on using ownCloud's [http://owncloud.org/sync-clients/ sync-clients], make sure to have [[ntpd]] installed and running on your ownCloud server, otherwise the sync-clients will fail.<br />
<br />
* Add some [[LAMP#SSL|SSL encryption]] to your connection!<br />
(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )<br />
<br />
* More Apps for ownCloud can be found [http://apps.owncloud.com/ here]<br />
<br />
* To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.<br />
Afterwards restart httpd:<br />
<br />
# systemctl restart httpd<br />
<br />
log into your server go to the app sections you should see the new apps in there,<br />
<br />
* If you are protecting access to your ownCloud location with HTTP basic auth, the file "status.php" must be excluded from auth and be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
== Nginx + uwsgi_php configuration ==<br />
<br />
You can avoid the use of Apache, and run ownCloud in it's own process by using the {{pkg|uwsgi-plugin-php}} application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.<br />
*First of all you should set up your Nginx server. See the [[Nginx]] page for further information.<br />
*Set a server with the following lines in the http section of your {{ic|/etc/nginx/nginx.conf}} file:<br />
{{bc|<nowiki><br />
#this is to avoid Request Entity Too Large error<br />
client_max_body_size 1000M;<br />
# deny access to some special files<br />
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {<br />
deny all;<br />
}<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
uwsgi_pass 127.0.0.1:3001;<br />
}<br />
# everything else goes to the filesystem,<br />
# but / will be mapped to index.php and run through uwsgi<br />
location / {<br />
root /usr/share/webapps/owncloud;<br />
index index.php;<br />
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;<br />
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;<br />
}<br />
</nowiki>}}<br />
*Then create a [[Uwsgi|uWSGI]] config file. {{ic|/etc/uwsgi/owncloud.ini}} could be a good choice:<br />
{{bc|<nowiki><br />
[uwsgi]<br />
master = true<br />
socket = 127.0.0.1:3001<br />
<br />
# Change this to where you want ownlcoud data to be stored (maybe /home/owncloud)<br />
owncloud_data_dir = /srv/http/owncloud <br />
chdir = %(owncloud_data_dir)<br />
<br />
plugins = php<br />
php-docroot = /usr/share/webapps/owncloud<br />
php-index = index.php<br />
<br />
# only allow these php files, I don't want to inadvertently run something else<br />
php-allowed-ext = /index.php<br />
php-allowed-ext = /public.php<br />
php-allowed-ext = /remote.php<br />
php-allowed-ext = /cron.php<br />
php-allowed-ext = /status.php<br />
php-allowed-ext = /settings/apps.php<br />
php-allowed-ext = /core/ajax/update.php<br />
php-allowed-ext = /core/ajax/share.php<br />
php-allowed-ext = /core/ajax/requesttoken.php<br />
php-allowed-ext = /core/ajax/translations.php<br />
php-allowed-ext = /search/ajax/search.php<br />
php-allowed-ext = /search/templates/part.results.php<br />
php-allowed-ext = /settings/admin.php<br />
php-allowed-ext = /settings/users.php<br />
php-allowed-ext = /settings/personal.php<br />
php-allowed-ext = /settings/help.php<br />
php-allowed-ext = /settings/ajax/getlog.php<br />
php-allowed-ext = /settings/ajax/setlanguage.php<br />
php-allowed-ext = /settings/ajax/setquota.php<br />
php-allowed-ext = /settings/ajax/userlist.php<br />
php-allowed-ext = /settings/ajax/createuser.php<br />
php-allowed-ext = /settings/ajax/removeuser.php<br />
php-allowed-ext = /settings/ajax/enableapp.php<br />
php-allowed-ext = /core/ajax/appconfig.php<br />
php-allowed-ext = /settings/ajax/setloglevel.php<br />
<br />
# set php configuration for this instance of php, no need to edit global php.ini<br />
php-set = date.timezone=Etc/UTC<br />
php-set = open_basedir=%(owncloud_data_dir):/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud:/etc/webapps/owncloud<br />
php-set = session.save_path=/tmp/php_sess<br />
php-set = post_max_size=1000M<br />
php-set = upload_max_filesize=1000M<br />
<br />
# load all extensions only in this instance of php, no need to edit global php.ini<br />
php-set = extension=pdo_sqlite.so<br />
php-set = extension=exif.so<br />
php-set = extension=gd.so<br />
php-set = extension=imagick.so<br />
php-set = extension=gmp.so<br />
php-set = extension=iconv.so<br />
php-set = extension=mcrypt.so<br />
php-set = extension=sockets.so<br />
php-set = extension=sqlite3.so<br />
php-set = extension=xmlrpc.so<br />
php-set = extension=xsl.so<br />
php-set = extension=zip.so<br />
<br />
processes = 10<br />
cheaper = 2<br />
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null<br />
<br />
</nowiki>}}<br />
*You can run it with:<br />
# uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
*Otherwise, a simple systemd unit file to start the uwsgi instance can be (this is without using the emperor):<br />
{{bc|<nowiki><br />
[Unit]<br />
Description=OwnCloud service via uWSGI-PHP<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
ExecReload=/bin/kill -HUP $MAINPID<br />
KillSignal=SIGQUIT<br />
Restart=always<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Sync Clients ==<br />
<br />
The official clients can be found in this page : [http://owncloud.org/install/ Sync Clients]<br />
Also take notice that while the official ownCloud android app is a paid app on the play store, it is not a paid app on [https://f-droid.org/ F-Droid].<br />
<br />
=== Syncing Calendar and Contacts with [[Thunderbird]] ===<br />
<br />
==== Calendar ====<br />
<br />
You can install the Lightning add-on and use CalDav, with the address:<br />
<br />
http://<username>:<password>@<owncloudserver address>/owncloud/remote.php/caldav/calendars/<username>/<calendarname><br />
<br />
You could need to restart Thunderbird in order to sync the calendar properly.<br />
<br />
==== Contacts ====<br />
<br />
You can install the [http://www.sogo.nu/downloads/frontends.html SOGo frontend] and sync your contacts with the CardDav protocol (See also the [http://doc.owncloud.org/server/6.0/user_manual/pim/sync_thunderbird.html user manual]).<br />
<br />
== Troubleshooting ==<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
OwnCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if [[WebDAV]] is enabled. If you use a SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]] and access ownClouds admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:<br />
<br />
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.<br />
<br />
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
# update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
<br />
Should this not work consider disabling mod_curl in /etc/php/php.ini.<br />
<br />
=== Can't write into config directory! ===<br />
<br />
Check your httpd conf file (like owncloud.conf). Add your config dir (/etc/webapps by default) to <br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
Restart the httpd or php-fpm service to activate the change.<br />
<br />
=== Can't create data directory (/path/to/dir) ===<br />
<br />
Check your httpd conf file (like owncloud.conf). Add your data dir to <br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
Restart the httpd or php-fpm service to activate the change.<br />
<br />
=== CSync failed to find a specific file. ===<br />
<br />
Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again.<br />
<br />
openssl genrsa -out server.key 2048<br />
openssl req -new -key server.key -x509 -days 365 -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed, to fix that you can either use phpMyAdmin by editing the oc_appconfig table(in the case you got lucky and the table has edit option) or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes'<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic auth, make sure to exclude "status.php", which must be publicly accessible [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== "Can't write into apps directory" ===<br />
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual] either you need an apps directory that is writable by the http user, or you need to set "appstoreenabled" to false. <br />
<br />
''Also'', not mentioned there, the directory needs to be in the open_basedir line in {{ic|/etc/php/php.ini}}<br />
<br />
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}} which is owned by http. Then you can set "appstoreenabled" to true and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
<pre><br />
'apps_paths' => <br />
array (<br />
0 => <br />
array (<br />
'path' => '/usr/share/webapps/owncloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => <br />
array (<br />
'path' => '/var/www/owncloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
</pre><br />
Example open_basedir line from {{ic|/etc/php/php.ini}} (you might have other dirs in there as well):<br />
<pre><br />
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/<br />
</pre><br />
<br />
Directory permissions:<br />
<pre><br />
$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/<br />
drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps<br />
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/<br />
</pre><br />
<br />
== See also ==<br />
* [http://owncloud.org/ ownCloud official website]<br />
* [http://doc.owncloud.org/server/7.0/admin_manual/ ownCloud 7.0 Admin Documentation]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=IOS&diff=332693IOS2014-08-27T14:13:54Z<p>Ilfugiuliopascal: Add Mobile devices category</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Sound]]<br />
[[Category:Mobile devices]]<br />
{{Related articles start}}<br />
{{Related|Audiobook}}<br />
{{Related|Upgrading iOS}}<br />
{{Related articles end}}<br />
The purpose of this article is to demonstrate the use of idevices under Arch Linux.<br />
<br />
== Required Packages ==<br />
To interact with iOS devices with thunar or nautilus, install {{pkg|gvfs-afc}} and {{pkg|usbmuxd}}. Remember restart X afterwards. Now iOS devices should show up in thunar or nautilus. Not tested with KDE file managers.<br />
<br />
{{Note|All deps should get pulled down when installing gvfs-afc.}}<br />
<br />
== Changing iPod Mountpoint ==<br />
<br />
Traditional iPods are accessed just like a normal USB storage device containing a vfat file system (in rare cases {{ic|hfsplus}}), and can be [[USB storage devices| accessed as such]]. See the [[USB storage devices]] article for detailed instructions.<br />
<br />
If udisks2 is running, it will mount an attached iPod to {{ic|/run/media/''$USER''/''iPod name''}} (the older udisks will use {{ic|/media/''&lt;iPod name&gt;''}}).<br />
<br />
If the volume label of your iPod is long, or contains a mixture of spaces, and/or lower-case and capital letters, it may present an inconvenience. You may easily change the volume label for more expedient access using {{ic|dosfslabel}} from the {{pkg|dosfstools}} package:<br />
<br />
* Get and confirm the current volume label:<br />
# dosfslabel /dev/sd''XY''<br />
* Set the new volume label:<br />
# dosfslabel /dev/sd''XY'' ArchPod<br />
* Unmount the device:<br />
$ udisksctl unmount -b /dev/sd''XY''<br />
* Mount it again:<br />
$ udisksctl mount -b /dev/sd''XY''<br />
where {{ic|/dev/sdxx}} is the current device node of your iPod.<br />
<br />
== Importing videos and pictures ==<br />
<br />
Both videos and photos can be found in typically in {{ic|''&lt;mountpoint&gt;''/DCIM/100APPLE}}.<br />
<br />
=== HTML5 videos ===<br />
<br />
Typically you want to convert MOV files to a HTML5 video format like OGV using ffmpeg2theora. Note that the creation date metadata is not in the converted video, so you need to use a script like:<br />
<br />
find -name "*.MOV" | while read mov<br />
do<br />
d=$(gst-discoverer-0.10 -v $mov | awk '/datetime:/{print $2}' | tr -d \")<br />
base=${mov%.*}<br />
if test -f $base.ogv<br />
then<br />
touch -d${d} $base.ogv<br />
ls -l $base.ogv<br />
else<br />
echo $base.ogv missing<br />
fi<br />
done<br />
<br />
And use {{ic|cp -a}} or {{ic|rsync -t}} in order to preserve the file's date & time.<br />
<br />
=== Importing pictures and deleting them ===<br />
<br />
You can move photos and videos out of {{ic|''&lt;mountpoint&gt;''/DCIM/100APPLE}}, however you need to trigger a rebuild of the "Camera Roll" database by deleting the old databases.<br />
<br />
PhotoData$ sudo rm Photos* com.apple.photos.caches_metadata.plist<br />
<br />
== Converting video for iPod ==<br />
<br />
=== Gen 5/5.5 ===<br />
<br />
=== Handbrake ===<br />
<br />
[http://handbrake.fr/ Handbrake] is a nifty tool with presets for a variety of iPod versions. CLI and GTK versions are available from pacman as {{pkg|handbrake-cli}} and {{pkg|handbrake}} respectively.<br />
<br />
If you do decide to take the CLI way, a good guide is available at http://trac.handbrake.fr/wiki/CLIGuide.<br />
<br />
==== DVD to iPod ====<br />
'''Get from:''' {{AUR|podencoder}}<br><br />
'''Depends on:''' aur/gpac mplayer<br />
<br />
Has detailed help, and is fairly self explanatory.<br />
<br />
An alternative is to use a method suggested at [[DVD Ripping]] then use one of the programs listed below to convert that to an iPod-friendly format.<br />
<br />
==== Video File to iPod ====<br />
'''Get from:''' http://thomer.com/howtos/mp4ize<br><br />
'''Depends on:''' {{pkg|mplayer}}<br />
<br />
This is a Ruby script to convert video files to an mp4 suitable for an iPod or iPhone.<br />
<br />
=== More Advanced/Configurable Methods ===<br />
<br />
==== Avidemux ====<br />
[[pacman|Install]] {{Pkg|avidemux-gtk}} or {{Pkg|avidemux-qt}} from the official repositories.<br />
<br />
This can convert to mp4 files. If you enforce a hard max of bit rate @ 700ish and keep the video size to 720x480 or 320x240 than it works fine for video file exporting.<br />
<br />
==== Mencoder ====<br />
<br />
[[pacman|Install]] the {{pkg|mplayer}} package from the official repositories.<br />
<br />
Has ''extremely'' comprehensive configuration support, which will be able to spit out iPod-compatible video files. Check out {{ic|man mencoder}}; a lot of MPlayer opts will also affect encoding.<br />
<br />
A basic guide is also available at [[MEncoder]].<br />
<br />
An example command to encode iPhone/iPod Touch-compatible video:<br />
<br />
mencoder INPUT -o output.mp4 \<br />
-vf scale=480:-10,harddup \<br />
-oac faac -faacopts mpeg=4:object=2:raw:br=128 \<br />
-of lavf -lavfopts format=mp4 \<br />
-ovc x264 -x264encopts nocabac:level_idc=30:bframes=0<br />
<br />
==== FFMpeg ====<br />
<br />
[[pacman|Install]] the {{pkg|ffmpeg}} package from the official repositories.<br />
<br />
Another encoder with comprehensive configuration support. Example command to encode for 5G iPod:<br />
<br />
ffmpeg -vcodec xvid -b 300 -qmin 3 -qmax 5 -bufsize 4096 \<br />
-g 300 -acodec aac -ab 96 -i INPUT -s 320x240 \<br />
-aspect 4:3 output.mp4<br />
<br />
or iPod Touch/iPhone compatible video output:<br />
<br />
ffmpeg -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5\<br />
-bufsize 4096 -g 300 -acodec aac -ab 192 -s 480×320 -aspect 4:3 -i INPUT output.mp4<br />
<br />
== iPhone/iPod Touch ==<br />
<br />
=== Introduction ===<br />
By default, neither the iPhone nor the iPod Touch present mass storage capability over USB, though there exist two solutions for accessing your files.<br />
<br />
The first is to mount your device through the FUSE file system SSHFS. This requires jailbreaking, which can be done on any major OS using e.g. [http://www.ijailbreak.com/how-to/how-to-jailbreak-iphone-4s-absinthe-linux/ Absinthe] for recent iOS versions. After jailbreaking, an SSH server will also need to be installed on the device, which can be done through the Cydia program, installed on the device during the jailbreak process.<br />
<br />
The second is to use a different FUSE file system called [http://www.libimobiledevice.org/ iFuse], which allows you to mount your device through USB, as you normally would. This method requires no hacking and is in general the better solution, though be aware that the software is still under heavy development. As of late, however, it has proven to be rather reliable and stable.<br />
<br />
{{Note|The current releases of {{pkg|libgpod}} and {{pkg|gtkpod}} support the iPod Touch and the iPhone OS 3.1.x up to iOS 4.3.x. It is possible to transfer pictures and music without limitations.}}<br />
<br />
Refer to this page:[https://help.ubuntu.com/community/PortableDevices/iPhone]<br />
<br />
=== Making Friends with the Device ===<br />
<br />
==== The SSHFS Way ====<br />
<br />
After this the easiest way to properly initialise a few things on the device's side is with the [http://launchpad.net/ipod-convenience iPod convenience script]. This is available in the AUR as {{AUR|ipod-convenience}}<br />
<br />
Next do {{ic|modprobe fuse}} to actually load the fuse module. You may also want to add it to your MODULES array in {{ic|/etc/rc.conf}} to have it loaded on boot.<br />
<br />
A few things may need changing in the script, depending on your setup. If you do not use sudo, replace:<br />
sudo lsusb -v -d 05ac: | grep iSerial | awk '{print $3}' | cut -b1-16 | xargs printf "FirewireGuid: 0x%s" >> $MOUNTPOINT/iTunes_Control/Device/SysInfo<br />
with:<br />
su -c "lsusb -v -d 05ac: | grep iSerial | awk '{print $3}' | cut -b1-16 | xargs printf \"FirewireGuid: 0x%s\" >> $MOUNTPOINT/iTunes_Control/Device/SysInfo"<br />
in the file /usr/share/ipod-convenience/mount-umount. You may also need to replace:<br />
PROCESS=`ssh root@$IPADDRESS ps x | grep MobileMusicPlayer | grep -v grep | awk '{print $1}'`<br />
with:<br />
PROCESS=`ssh root@$IPADDRESS ps ax | grep MobileMusicPlayer | grep -v grep | awk '{print $1}'`<br />
(I'm not sure under what circumstances this is necessary; it was on my iPod Touch running 2.2.1, and it will not have any adverse affect under other firmware version)<br />
<br />
After that, edit the {{ic|/etc/default/ipod-convenience}} file with details of your device's IP address, and create the mount point, which is {{ic|/media/ipod}} by default (make sure to set the permissions correctly if you want it accessible by a regular user)<br />
<br />
To actually mount the device, run {{ic|ipod-touch-mount}} or {{ic|iphone-mount}} (they both do exactly the same thing so it doesn't matter which). This should prompt for the root password of the device twice, which is 'alpine' by default in firmware versions 1.1 and up. This will need to be done every time you want to sync. (This can be done without having to type the password each time by using SSH keys - see [[Using SSH Keys]] for more information)<br />
<br />
==== The iFuse Way ====<br />
{{Note|If using an iPad/iPad2 that has a screen password, one must unlock the device to gain access through the USB interface.}}<br />
{{Note|The current version of ifuse is unable to mount an iPad2 using iOS v5.0.1. The git version of libimobiledevice in AUR works with an iPod using iOS v5.1.1}}<br />
<br />
You will need to install '''usbmuxd''', '''libplist''', '''libimobiledevice''', '''ifuse'''. You can pull in all four with:<br />
# pacman -S ifuse<br />
Now make sure that you have the fuse module loaded by doing {{ic|modprobe fuse}}, assuming that you do not have it in {{ic|/etc/rc.conf}} already.<br />
<br />
You can now mount your device. Make sure it is unlocked before you plug it in, or it won't be recognized.<br />
# ifuse <mountpoint><br />
The mountpoint field is where you want to have it mounted.<br />
<br />
And you're done! You should be able to point your syncing software of choice to the mount point and be able to transfer files.<br />
<br />
To unmount your device:<br />
# umount <mountpoint><br />
<br />
==== Generating HashInfo file ====<br />
If you have not previously synced your device using iTunes specifically, you will get error messages telling you that the HashInfo file is missing. This can be fixed by making an iTunes installation on MacOS or Windows create it (by plugging in the iPod there). Alternatively you can create this file yourself, instructions can be found on [http://ihash.marcansoft.com/ this website].<br />
<br />
=== Unobfuscating the Database ===<br />
<br />
Since firmware version 2.0, Apple has obfuscated the music database. If you are using recent firmware, the file {{ic|/System/Library/Lockdown/Checkpoint.xml}} can be modified to enable use of the older, non-obfuscated database. Replace:<br />
<key>DBVersion</key><br />
<integer>4</integer><br />
with:<br />
<key>DBVersion</key><br />
<integer>2</integer><br />
Then reboot your device.<br />
<br />
If syncing fails with "ERROR: Unsupported checksum type '0' in cbk file generation!", you may need to leave this at 4. libgpod seems to [http://gitorious.org/libgpod/libgpod/blobs/b9b83dc8b6c3d1f0c53ed32f05279ca838d54e02/src/itdb_sqlite.c#line2064 expect a hashed database.]<br />
<br />
=== Syncing ===<br />
<br />
Use your favourite [[iPod#iPod management apps|iPod-compatible program]]. Individual configuration will vary, but in general, pointing your program to your specified mount point should yield good results.<br />
<br />
After you've synced, run {{ic|ipod-touch-umount}} (or {{ic|iphone-umount}}, depending on your taste) to unmount the SSHFS file system and restart the {{ic|MobileMusicPlayer}} process on the device, so that the new music database is read.<br />
<br />
If you used iFuse, simply type:<br />
# umount <mountpoint><br />
You will still need to reload the MobileMusicPlayer process. If your device is not jailbroken, then you are stuck restarting it.<br />
<br />
=== The iFuse Way - iPhone OS 3.x and 4.x ===<br />
''Warning: this software is considered unstable and should probably not be used in a productive environment''<br />
<br />
Make sure you already installed base-devel, which contains several programs needed to compile your new components. If you did not, just run:<br />
<br />
# pacman -S base-devel<br />
<br />
which will install everything you will need.<br />
<br />
You will need to install {{Pkg|libplist}}, {{Pkg|libimobiledevice}}, {{Pkg|libgpod}}, {{Pkg|usbmuxd}} and {{Pkg|ifuse}}.<br />
<br />
Now make sure that you have the fuse module loaded by doing {{ic|modprobe fuse}}, assuming that you do not have it in /etc/rc.conf already.<br />
Check if the group "usbmux" has been created and add your user using<br />
# gpasswd -a <user> usbmux<br />
<br />
To make sure the new rules apply, execute<br />
$ udevadm control --reload-rules<br />
and plug in your iPod/iPhone. <br />
<br />
Run as ROOT:<br />
# usbmuxd<br />
Now you should the be able to mount your device by running<br />
$ ifuse ~/ipod<br />
or similar. Make sure the directory used exists and is accessible to your user.<br />
<br />
Mount the device and create the iTunes_Control/Device directory. Then, get your UUID. It should be in the syslog from usbmuxd, or you can find it by running <br />
$ lsusb -v | egrep "iSerial.*[a-f0-9]{40}"<br />
It should be 40 characters long. Then, run <br />
$ ipod-read-sysinfo-extended <uuid> <mountpoint>. <br />
This should generate a file named {{ic|iTunes_Control/Device/SysInfoExtended}}.<br />
<br />
Now, start up your favourite app, it should detect the device via libgpod.<br />
I recommend using gtkpod-git for the time being, as that is what the libgpod developers seem to be using for debugging purposes.<br />
<br />
{{Note|If gtkpod/gtkpod-git seems to work only from root/sudo while your user only gets the slash screen, you can delete your {{ic|~/.gtkpod}} folder and retry. Note that gtkpod will forget your preferences.}}<br />
<br />
=== Rhythmbox ===<br />
<br />
Rhythmbox uses the Gnome Virtual File System to detect mobile devices. If using the iFuse way, gvfs-afc needs to be installed:<br />
# pacman -S gvfs-afc<br />
<br />
== iPod Classic/Nano3g ==<br />
<br />
You need to set up the iPod to make libgpod able to find its FireWire ID. For this, you will need to get your FireWire ID manually<br />
<br />
1) Mount the iPod as a rw mount point. In the following example, I will use {{ic|/mnt/ipod}}.<br />
<br />
2 ) Find the serial number by typing<br />
<br />
sudo lsusb -v | grep -i Serial <br />
<br />
this should print a 16 character long string like 00A1234567891231 (it will have no colons or hyphens) <br />
<br />
3) Once you have that number, create or edit {{ic|/mnt/ipod/iPod_Control/Device/SysInfo}}. Add to that file the line below:<br />
<br />
FirewireGuid: 0xffffffffffffffff<br />
<br />
(replace ffffffffffffffff with the 16 digit string you obtained at the previous step and do not forget the leading 0x before the string)<br />
<br />
Your iPod can now be managed with Amarok or gtkpod.<br />
<br />
== iPod management apps ==<br />
*[http://live.gnome.org/Rhythmbox Rhythmbox]<br />
**GTK interface ([[GNOME]])<br />
**Is part of the official GNOME projects.<br />
**Fast, light interface.<br />
**Manage music on your computer and iPod<br />
**Download or stream podcasts and video podcasts<br />
**Queue up songs and podcasts<br />
**Last.fm integration<br />
**Live radio stations<br />
**Jamendo and Magnatune support<br />
**Audio CD burning<br />
**Album cover display<br />
**Song lyrics display<br />
**DAAP sharing<br />
<br />
*[http://banshee.fm Banshee]<br />
**GTK interface (GNOME)<br />
**Uses Mono so it is slower and more resource hogging than rhythmbox<br />
**Device Sync: Sync your music and videos to your Android, iPod, or other device - or import its media<br />
**Podcasts: Download or stream podcasts and video podcasts<br />
**Play Queue: Queue up songs, videos, and podcasts, or let the Auto DJ take over<br />
**Shuffle Modes: Shuffle (or Auto DJ) by artist, album, rating, or even songs' acoustic similarity<br />
**Album Art: Artwork is automatically fetched as you listen<br />
**Powerful Search, Smart Playlists: Find exactly what you want, fast<br />
**Video Support: All the power of Banshee, now for your videos<br />
<br />
*[http://www.yamipod.com Yamipod]<br />
**GTK interface (GNOME)<br />
**super lightweight application for managing ONLY music on your iPod (not on your computer)<br />
**easy ratings edit<br />
**PC to iPod synchronization<br />
**News RSS and podcasts to iPod upload<br />
**Last.fm support <br />
**playlist support<br />
<br />
*[http://www.gtkpod.org gtkpod]<br />
**GTK interface (GNOME)<br />
**Read your existing iTunesDB (i.e. import the existing contents of your iPod including play counts, ratings and on-the-go playlists).<br />
**Add MP3, WAV, M4A (non-protected AAC), M4B (audio book), podcasts, and various video files (single files, directories or existing playlists) to the **iPod. You need a third party product to download podcasts, like 'bashpodder' or 'gpodder'<br />
**View, add and modify Cover Art<br />
**Browse the contents of your local hard disk by album/artist/genre by adding all your songs to the 'local' database. From there the tracks can be **dragged over to the iPod/Shuffle easily.<br />
**Create and modify playlists, including smart playlists.<br />
**You can choose the charset the ID3 tags are encoded in from within gtkpod. The default is the charset currently used by your locale setting.<br />
**Extract tag information (artist, album, title...) from the filename if you supply a template.<br />
**Detect duplicates when adding songs (optional).<br />
**Remove and export tracks from your iPod.<br />
**Modify ID3 tags -- changes are also updated in the original file (optional).<br />
**Refresh ID3 tags from file (if you have changed the tags in the original file).<br />
**Sync directories.<br />
**Normalize the volume of your tracks (uses mp3gain or the replay-gain tag)<br />
**Write the updated iTunesDB and added songs to your iPod.<br />
**Work offline and synchronize your new playlists / songs with the iPod at a later time.<br />
**Export your korganizer/kaddressbook/Thunderbird/evocalendar/evolution/webcalendar... data to the iPod (scripts for other programs can be added).<br />
<br />
*[http://www.floola.com Floola]<br />
**GTK interface (GNOME)<br />
<br />
*[http://amarok.kde.org/ Amarok]<br />
**KDE/qt interface<br />
<br />
*[http://qpod.sourceforge.net qPod]<br />
**KDE/qt interface<br />
**front-end for GNUpod<br />
<br />
*[http://www.gnu.org/software/gnupod/ GNUpod]<br />
**command-line only<br />
<br />
*[http://www.jakpod.de/ jakpod]<br />
** JakPod is based on Java and allows you to copy music and video files to your iPod.<br />
** iPod Nano 6th support<br />
** {{AUR|jakpod}}<br />
<br />
== See also ==<br />
** [http://help.ubuntu.com/community/PortableDevices/iPhone More information about iPhone/iPod Touch support]<br />
** [http://wiki.gotux.net/code/perl/atget Apple trailers downloader script]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=User:Lekensteyn/Upgrading_iOS&diff=332692User:Lekensteyn/Upgrading iOS2014-08-27T14:13:29Z<p>Ilfugiuliopascal: Add Mobile devices category</p>
<hr />
<div>[[Category:Other hardware]]<br />
[[Category:Mobile devices]]<br />
This article describes how to update the iOS version on your iDevice without iTunes. It was tested with an iPad 3 (GSM or "AT & T") where a jailbroken 6.x device gets "upgraded" to iOS 7.1 (unfortunately, not jailbroken).<br />
<br />
== Introduction ==<br />
iPod/iPad/iPhones are supported by the [http://www.libimobiledevice.org/ libimobiledevice] project.<br />
The package {{pkg|libimobiledevice}} provides many tools including {{ic|idevicebackup2}} to backup and restore data and settings.<br />
<br />
A firmware update will wipe all your data, so you must backup your apps and data first.<br />
<br />
== Requirements ==<br />
Hardware:<br />
* iDevice (tested with iPad 3 GSM)<br />
* USB cable<br />
* Enough battery, just to be sure (tested with 30%, at the end I still had 30%)<br />
<br />
Packages:<br />
* {{pkg|libimobiledevice}}<br />
* libirecovery (see below)<br />
* idevicerestore (depends on libirecovery) (see below)<br />
* {{pkg|usbmuxd}} (at least 1.0.9-1 needs a patch though, see below)<br />
<br />
You need sufficient permissions to access the iDevice in Recovery mode. I do not like running everything as root, so let us create a udev rule:<br />
{{hc|/etc/udev/rules.d/42-ipad-recovery.rules|<nowiki><br />
# iPad 3 GSM in Recovery Mode, Apple, Inc. Apple Mobile Device [Recovery Mode]<br />
SUBSYSTEM=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="1281", TAG+="uaccess"</nowiki>}}<br />
Your idProduct may vary, look it up with {{ic|lsusb}}.<br />
<br />
{{note|TODO: create packages for this? Right now they are installed to {{ic|/tmp/i}} because I do not need them after installation}}<br />
<br />
Build and install libirecovery to {{ic|/tmp/i}} (tested with commit {{ic|3687ea11271b79fb2643c8f041490544c17c5e58}}:<br />
(throw-away package, I do not need it after the upgrade).<br />
<br />
git clone https://github.com/libimobiledevice/libirecovery.git<br />
cd libirecovery<br />
./autogen.sh --prefix=/tmp/i/fs<br />
make && make install<br />
<br />
Build and install idevicerestore (tested with commit {{ic|9bc7a528d6ff42211f8d19ffa8ab2c2d371ea8d0}}):<br />
<br />
git clone https://github.com/libimobiledevice/idevicerestore.git<br />
cd idevicerestore<br />
PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/tmp/i/fs/lib/pkgconfig ../autogen.sh --prefix=/tmp/i/fs<br />
make && make install<br />
<br />
Install a patched version of usbmuxd to fix a connection reset when the receive buffer is full (based on 1.0.9-1). Grab the files from https://github.com/Lekensteyn/aur/tree/master/usbmuxd and install with:<br />
<br />
makepkg -i<br />
<br />
== Full process ==<br />
Upgrading an iDevice consists of:<br />
<br />
* Get the firmware file.<br />
* Create backup.<br />
* Install new firmware.<br />
* Restore backup.<br />
<br />
=== Firmware file ===<br />
Generally, you can only install the latest firmware version because Apple requires updates to be signed before they can be installed.<br />
That means also that a working Internet connection is required during the update process.<br />
<br />
Firmware updates are provides as "IPSW" files which can be looked up in http://ipswdownloader.com/. Once you select a device, model and version on that website, you will be provided with a non-unique download URL. It looks like {{ic|http://appldnld.apple.com/iOS7.1/031-4615.20140310.HJvGp/iPad3,3_7.1_11D167_Restore.ipsw}} (iPad 3 (GSM) 7.1). Note that this file is HUGE, about 1.33 GiB for the version I installed.<br />
<br />
=== Backup ===<br />
Assuming that your device is already connected and that you want to store backups in {{ic|~/ibackup}}:<br />
{{bc|idevicebackup2 backup --full ~/ibackup/}}<br />
<br />
This backup includes settings (Wi-Fi, Apple ID, etc.), media (photos and videos) and app settings. *Not* included in the backup are the apps themselves, these can be manually installed in the App Store.<br />
<br />
=== Install new firmware ===<br />
The actual firmware installation will take about eight minutes. In this process, a SHSH blob is retrieved from Apple's server. Without this signature, you cannot install firmware.<br />
{{bc|/tmp/i/fs/bin/idevicerestore -e iPad3,3_7.1_11D167_Restore.ipsw}}<br />
<br />
Output (inline comments marked with "COMMENT", omitted lines with {{ic|<snip>}}):<br />
{{bc|<nowiki><br />
Found device in Recovery mode<br />
<snip><br />
About to send filesystem...<br />
Connected to ASR<br />
Validating the filesystem<br />
Filesystem validated<br />
Sending filesystem now...<br />
[==================================================] 100.0%<br />
Done sending filesystem<br />
Restoring image (14)<br />
[==================================================] 100.0%<br />
Checking filesystems (16)<br />
Checking filesystems (16)<br />
About to send KernelCache...<br />
<snip><br />
Sending Baseband TSS request...<br />
Request URL set to https://gs.apple.com/TSS/controller?action=2<br />
Sending TSS request attempt 1... response successfully received<br />
Received Baseband SHSH blobs<br />
[==================================================] 100.0%<br />
Sending BasebandData now...<br />
Done sending BasebandData<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
Flashing NOR (19)<br />
COMMENT: this may appear to "hang", just wait for a minute<br />
Updating Baseband completed.<br />
Mounting filesystems (17)<br />
Unknown operation (49)<br />
Unknown operation (25)<br />
Unknown operation (51)<br />
Waiting for NAND (29)<br />
Waiting for NAND (29)<br />
Got status message<br />
Status: Restore Finished<br />
Cleaning up...<br />
DONE</nowiki>}}<br />
<br />
{{note|if idevicerestore exits with status code 141 during "Sending filesystem now...", then you need a newer usbmuxd version. See #Requirements}}<br />
<br />
After the firmware update completes, the device will reboot itself and greet you in many languages. Continue with configuring the device until you get the options "This is a new device" (or something like that), "Restore from iCloud" and "Restore from iTunes". Chose "Restore from iTunes" here and continue with the next step.<br />
<br />
=== Restore ===<br />
This assumes that your device is already connected and that you have previously made a backup to {{ic|~/ibackup}}.<br />
The following command should be executed after performing a factory reset (or just after updating the firmware).<br />
{{bc|idevicebackup2 restore --reboot --system --settings ~/ibackup/}}<br />
<br />
=== Completion ===<br />
Now you still need to install apps from the App Store. Be sure to check settings for new "features" that invade your privacy and security.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Android&diff=332691Android2014-08-27T14:12:44Z<p>Ilfugiuliopascal: Add Mobile devices category</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Mobile devices]]<br />
[[it:Android]]<br />
[[ru:Android]]<br />
[[zh-CN:Android]]<br />
== Exploring Android device on Arch ==<br />
<br />
To view the contents of your Android storage using [[GNOME]] on your Arch machine, you can install [[GVFS]]. For recognizing your phone, you also need {{Pkg|gvfs-mtp}} (if your device is connected via [[MTP]]) or {{Pkg|gvfs-gphoto2}} (if your phone is connected via PTP).<br />
<br />
[[KDE]] users can enable full [[MTP]] support simply by installing {{Pkg|kio-mtp}}.<br />
<br />
If you're interested in just connecting to phone via adb or fastboot, install {{Pkg|android-tools}} and skip to [[#Connecting to a real device - Android Debug Bridge (ADB)]].<br />
== Android development on Arch Linux ==<br />
<br />
There are 3 steps that need to be performed before you can develop Android applications on your Arch Linux box:<br />
<br />
# Install the Android SDK core component,<br />
# Install one or several Android SDK Platform packages,<br />
# Install one of the IDEs compatible with the Android SDK.<br />
=== Install Android SDK core components ===<br />
<br />
{{Note|First, if you are running a 64-bit system, make sure the [[multilib]] repository is enabled in [[Pacman#Repositories|pacman.conf]].}}<br />
<br />
Before developing Android applications, you need to install the Android SDK, which is made of 3 distinct packages, all installable from [[Arch User Repository|AUR]]:<br />
<br />
# {{AUR|android-sdk}}<br />
# {{AUR|android-sdk-platform-tools}}<br />
# {{AUR|android-sdk-build-tools}}<br />
<br />
If you have not changed the [[PKGBUILD]], these packages will be installed to this default location {{ic|/opt/android-sdk}}.<br />
<br />
{{Note|As an alternative to a global install with the [[AUR]] packages, the SDK can be installed to a user's home directory via [https://developer.android.com/sdk/index.html the upstream instructions].}}<br />
<br />
=== Getting Android SDK platform API ===<br />
<br />
Install the desired Android SDK Platform package from the [[AUR]]:<br />
<br />
* {{aur|android-platform}} (latest)<br />
* {{aur|android-platform-19}}<br />
* {{aur|android-platform-18}}<br />
* {{aur|android-platform-17}}<br />
* {{aur|android-platform-16}}<br />
* {{aur|android-platform-15}}<br />
* {{aur|android-platform-14}}<br />
* {{aur|android-platform-13}}<br />
* {{aur|android-platform-12}}<br />
* {{aur|android-platform-11}}<br />
* {{aur|android-platform-10}}<br />
* {{aur|android-platform-9}}<br />
* {{aur|android-platform-8}}<br />
* {{aur|android-platform-7}}<br />
* {{aur|android-platform-7}}<br />
* {{aur|android-platform-6}}<br />
* {{aur|android-platform-5}}<br />
* {{aur|android-platform-4}}<br />
* {{aur|android-platform-3}}<br />
* {{aur|android-platform-2}}<br />
<br />
=== Setting up Development Environment ===<br />
<br />
Android Studio is a new (and still experimental!) Android development environment based on IntelliJ IDEA. The more traditional IDE is [[Eclipse]] with the ADT plugin and related packages. Alternatively you can use [[Netbeans]] for development after installing the plugin as described below.<br />
<br />
==== Android Studio ====<br />
<br />
[http://developer.android.com/sdk/installing/studio.html Android Studio] is a new (and still experimental!) Android development environment based on IntelliJ IDEA. Similar to Eclipse with the ADT Plugin, Android Studio provides integrated Android developer tools for development and debugging.<br />
<br />
You can download and install it with the {{AUR|android-studio}} package from the AUR. If you get an error about a missing SDK, refer to the section Getting Android SDK platform API above.<br />
<br />
==== Eclipse ====<br />
<br />
Most stuff required for Android development in Eclipse is already packaged in AUR:<br />
<br />
Official plugin by Google &ndash; [http://developer.android.com/sdk/eclipse-adt.html Eclipse ADT]:<br />
# {{AUR|eclipse-android}}<br />
<br />
Dependencies:<br />
# {{AUR|eclipse-emf}}<br />
# {{AUR|eclipse-gef}}<br />
# {{AUR|eclipse-wtp}}<br />
<br />
{{Note|<br />
* if you get a message about unresolvable dependencies, install [[Java]] manually and try again.<br />
* as an alternative, you can install the ADT via eclipse's built in "add new software" command (see instructions on ADT site).<br />
* if you are in real trouble, it is also possible to download Android SDK and use the bundled Eclipse. This usually works without problems.<br />
* if you need to install extra SDK plugins not found in the AUR, you must change the file ownership of /opt/android-sdk first. You can do this with {{ic|# chgrp -R users /opt/android-sdk ; chmod -R 0775 /opt/android-sdk}} (see [[File Permissions]] for more details).<br />
}}<br />
<br />
Enter the path to the Android SDK Location in<br />
<br />
Windows -> Preferences -> Android<br />
<br />
==== Netbeans ====<br />
<br />
If you prefer using [[Netbeans]] as your IDE and want to develop Android applications, download the [http://www.nbandroid.org nbandroid] by going to:<br />
<br />
Tools -> Plugins -> Settings<br />
<br />
Add the following URL: http://nbandroid.org/updates/updates.xml<br />
<br />
Then go to '''Available Plugins''' and install the '''Android''' and '''JUnit''' plugins. Once you have installed go to:<br />
<br />
Tools -> Options -> Miscellaneous -> Android<br />
<br />
and select the path where the SDK is installed (/opt/android-sdk by default). That is it, now you can create a new Android project and start developing using Netbeans.<br />
<br />
=== Connecting to a real device - Android Debug Bridge (ADB) ===<br />
To get ADB to connect to a real device or phone under Arch, you must<br />
* Enable USB Debugging on your phone or device.<br />
** Older versions: This is usually done from {{ic|Settings --> Applications --> Development --> USB debugging}}. Reboot the phone after checking this option to make sure USB debugging is enabled.<br />
** Jelly Bean (4.2) and newer: Go to {{ic|Settings --> About Phone}} tap under “Build Number” until a popup that will tell you that there's more 3 taps to you become a developer, tap it 3 times and then go to {{ic|Settings --> Developer --> USB debugging}} and enable it.<br />
* install the [[udev]] rules to connect the device to the proper {{Ic|/dev/}} entries.<br />
<br />
==== Using existing rules ====<br />
[[pacman|Install]] {{Pkg|android-udev}} from the [[official repositories]] to get a common list of vendor IDs. If [[#Does It Work?|ADB recognizes your device]] (it is visible and accessible in IDE), you are done. Otherwise see instructions below.<br />
<br />
==== Figure Out Your Device Ids ====<br />
Each Android device has a USB vendor/product ID. An example for HTC Evo is:<br />
vendor id: 0bb4<br />
product id: 0c8d<br />
<br />
Plug in your device and execute:<br />
$ lsusb<br />
<br />
It should come up something like this:<br />
Bus 002 Device 006: ID 0bb4:0c8d High Tech Computer Corp.<br />
<br />
==== Adding udev Rules ====<br />
Use the rules from [http://source.android.com/source/initializing.html#configuring-usb-access Android developer] or you can use the following template for your udev rules, just replace [VENDOR ID] and [PRODUCT ID] with yours. Copy these rules into {{ic|/etc/udev/rules.d/51-android.rules}}:<br />
<br />
{{hc|/etc/udev/rules.d/51-android.rules|2=<nowiki>SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0666"<br />
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_adb"<br />
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"</nowiki>}}<br />
<br />
Then, to reload your new udev rules, execute:<br />
# udevadm control --reload-rules<br />
<br />
==== Configuring adb ====<br />
Instead of using udev rules you may create/edit ~/.android/adb_usb.ini which contains list of vendor ids.<br />
<br />
$ cat ~/.android/adb_usb.ini <br />
0x27e8<br />
<br />
==== Does It Work? ====<br />
<br />
After you have setup the udev rules, unplug your device and replug it.<br />
<br />
After running:<br />
$ adb devices<br />
<br />
you should see something like:<br />
List of devices attached <br />
HT07VHL00676 device<br />
<br />
If you do not have the '''adb''' program (usually available in {{Ic|/opt/android-sdk/platform-tools/}}), it means you have not installed the platform tools.<br />
<br />
If you are getting an empty list (your device is not there), it may be because you have not enabled USB debugging on your device. You can do that by going to Settings => Applications => Development and enabling USB debugging. On Android 4.2 (Jelly Bean) the Development menu is hidden; to enable it go to Settings => About phone and tap Build number 7 times.<br />
<br />
{{Tip|Make sure that your user is added to the group:<br />
# gpasswd -a ''username'' adbusers<br />
}}<br />
{{Tip|For some devices, you may have to enable MTP on the device, before ADB will work.}}<br />
If there are still problems such as ''adb'' displaying {{ic|???????? no permissions}} under devices, try restarting the adb server as root.<br />
# adb kill-server<br />
# adb start-server<br />
<br />
=== Tools specific to NVIDIA Tegra platform ===<br />
<br />
If you target your application at NVIDIA Tegra platform, you might also want to install tools, samples and documentation provided by NVIDIA. In [http://developer.nvidia.com/category/zone/mobile-development NVIDIA Developer Zone for Mobile] there are two tools: <br />
# The [http://developer.nvidia.com/tegra-resources Tegra Android Development Pack] provides tools (NVIDIA Debug Manager) related to [http://developer.android.com/sdk/eclipse-adt.html Eclipse ADT] and their documentation. <br />
# The [http://developer.nvidia.com/tegra-resources Tegra Toolkit] provides tools (mostly CPU and GPU optimization related), samples and documentation. <br />
<br />
Both are currently not available in the [[AUR]] anymore, because NVIDIA requires a registration/login for the download.<br />
<br />
=== Tethering ===<br />
See [[Android tethering]]<br />
<br />
== Building Android ==<br />
<br />
Please note that these instructions are based on the [http://source.android.com/source/building.html official AOSP build instructions]. Other Android-derived systems such as CyanogenMod will often require extra steps.<br />
<br />
=== OS bitness ===<br />
<br />
Android 2.2.x (Froyo) and below are the only versions of Android that will build on a 32-bit system. For 2.3.x (Gingerbread) and above, you will need a 64-bit installation. <br />
<br />
=== Required packages ===<br />
<br />
To build any version of Android, you need to install these packages:<br />
<br />
* 32-bit and 64-bit systems: {{Pkg|gcc}} {{Pkg|git}} {{Pkg|gnupg}} {{Pkg|flex}} {{Pkg|bison}} {{Pkg|gperf}} {{Pkg|sdl}} {{Pkg|wxgtk}} {{Pkg|squashfs-tools}} {{Pkg|curl}} {{Pkg|ncurses}} {{Pkg|zlib}} {{Pkg|schedtool}} {{Pkg|perl-switch}} {{Pkg|zip}} {{Pkg|unzip}} {{Pkg|libxslt}} {{Pkg|python2-virtualenv}}<br />
<br />
* 64-bit systems only: {{Pkg|gcc-multilib}} {{Pkg|lib32-zlib}} {{Pkg|lib32-ncurses}} {{Pkg|lib32-readline}}<br />
<br />
=== Java Development Kit ===<br />
<br />
{{Accuracy|[http://source.android.com/source/initializing.html upstream] specifically recommends openjdk by contrast}}<br />
<br />
Android requires a working '''Sun/Oracle JDK''' installed on your build system. It '''will not''' work with OpenJDK.<br />
<br />
For 2.3.x and higher, you can use {{AUR|jdk6}}, if you do not develop on the JVM, or {{AUR|jdk6-compat}}, if you do have a preferred JVM for other tasks. For 2.2.x and below, a version 5 JDK is required; {{AUR|jre5-opt}} is currently the only one left on the AUR.<br />
<br />
Note that, if you choose to install {{AUR|jdk6-compat}}, you will need to set the {{ic|JAVA_HOME}} environment variable to the location of the JDK6:<br />
<br />
$ export JAVA_HOME=/opt/java6<br />
<br />
Otherwise, {{ic|$PATH}} will be reset to the location of the JDK7 by the build scripts, and all your AOSP builds will abort, complaining about the wrong version of {{ic|javac}} (the Java Compiler.)<br />
<br />
To set {{ic|JAVA_HOME}} on the system level, see the files in '''/etc/profile.d''' named '''jdk.sh''', '''jdk.csh''', '''jre.csh''', and '''jre.sh'''.<br />
<br />
=== Setting up the build environment ===<br />
<br />
Download the {{ic|repo}} utility.<br />
<br />
$ mkdir ~/bin<br />
$ export PATH=~/bin:$PATH<br />
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo<br />
$ chmod a+x ~/bin/repo<br />
<br />
Create a directory to build.<br />
<br />
$ mkdir ~/android<br />
$ cd ~/android<br />
<br />
You will need to change the default Python from version 3 to version 2:<br />
<br />
$ virtualenv2 venv # Creates a directory, venv/, containing the Virtualenv<br />
<br />
Activate the Virtualenv, which will update $PATH to point at Python 2.<br />
<br />
{{Note|this activation is only active for the current terminal session.<br />
}}<br />
<br />
$ source venv/bin/activate<br />
<br />
=== Downloading the source code ===<br />
<br />
This will clone the repositories. You '''only''' need to do this the first time you build Android, or if you want to switch branches.<br />
<br />
* The {{ic|repo}} has a {{ic|-j}} switch that operates similarly to the one used with {{ic|make}}. Since it controls the number of simultaneous downloads, you should adjust the value depending on downstream network bandwidth.<br />
<br />
* You will need to specify a '''branch''' (release of Android) to check out with the {{ic|-b}} switch. If you leave the switch out, you will get the so-called '''master branch'''.<br />
<br />
$ repo init -u https://android.googlesource.com/platform/manifest -b master<br />
$ repo sync -j4<br />
<br />
Wait a long time. Just the uncompiled source code, along with the {{ic|.repo}} and {{ic|.git}} directories that are used to keep track of it, are well over 10 GB.<br />
<br />
{{Note|If you want to update your local copy of the Android source, at a later time, simply enter the build directory, load the Virtualenv, and re-sync:<br />
$ repo sync<br />
}}<br />
<br />
=== Actually building the code ===<br />
<br />
This should do what you need for AOSP:<br />
<br />
$ source build/envsetup.sh<br />
$ lunch full-eng<br />
$ make -j4<br />
<br />
If you run '''lunch''' without arguments, it will ask what build you want to create. Use -j with a number between one and two times number of cores/threads.<br />
<br />
The build takes a very long time.<br />
<br />
{{Note|Make sure you have enough RAM.<br />
Android will use the /tmp directory heavily. By default the size of the partition the /tmp folder is mounted on is half the size of your RAM. If it fills up, the build will fail. 4GB of RAM or more is recommended.<br />
* Alternatively, you can get rid of the tmpfs from [[Fstab|fstab]] all together. <br />
}}<br />
<br />
=== Testing the build ===<br />
<br />
When finished, run/test the final image(s).<br />
<br />
$ emulator<br />
<br />
== Tips & Tricks ==<br />
=== During Debugging "Source not found" ===<br />
Most probably the debugger wants to step into the Java code. As the source code of Android does not come with the Android SDK, this leads to an error. The best solution is to use step filters to not jump into the Java source code. Step filters are not activated by default. To activate them: <br />
Window -> Preferences -> Java -> Debug -> Step Filtering<br />
Consider to select them all. If appropriate you can add the android.* package. See the forum post for more information: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml<br />
<br />
=== Linux distribution on the sdcard ===<br />
You can install Debian like in this [http://forum.xda-developers.com/showthread.php?t=631389 thread]. Excellent guide to installing Arch in chroot (in parallel with Android) can be found on [http://archlinuxarm.org/forum/viewtopic.php?f=27&t=1361&start=40 archlinuxarm.org forum].<br />
<br />
=== Android SDK on Arch 64 ===<br />
When using the Android SDK and the Eclipse plugin on a 64 bit system, and the 'emulator' always crashes with a segfault, do the following:<br />
Provide a localtime file in /usr/share/zoneinfo/localtime e.g.: <br />
# cp /usr/share/zoneinfo/Europe/Berlin /usr/share/zoneinfo/localtime<br />
<br />
=== Better MTP support ===<br />
If you have an Android device that does not support UMS and you find mtpfs to be extremely slow you can install {{AUR|jmtpfs}} from the AUR. See [[MTP]] for more options.<br />
<br />
== See Also ==<br />
* [[Android Notifier]]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Android_notifier&diff=332690Android notifier2014-08-27T14:11:59Z<p>Ilfugiuliopascal: Add Mobile Devices category</p>
<hr />
<div>[[Category:Status monitoring and notification]]<br />
[[Category:Mobile devices]]<br />
[[it:Android Notifier]]<br />
Android Notifier is a linux application that receives notifications on sms, mms, battery status and more from your phone to your Linux, Mac or Windows PC. This article is about installing and running it in the background on Arch Linux.<br><br />
You will need the android app Remote Notifier installed on your phone which is available for free at [https://play.google.com/store/apps/details?id=org.damazio.notifier Google Play].<br />
<br />
==Prerequisites==<br />
<br />
* Android app installed on your phone: Remote Notifier by Rodrigo Damazio, from [https://play.google.com/store/apps/details?id=org.damazio.notifier Google Play] or [https://f-droid.org/repository/browse/?fdid=org.damazio.notifier F-Droid].<br />
** [http://code.google.com/p/android-notifier/ Author's site]<br />
** [http://www.appbrain.com/app/remote-notifier-for-android/org.damazio.notifier/ More at Appbrain]<br />
* Port 10600 tcp/udp open in your firewall (iptables rules coming soon...)<br />
<br />
==Installation==<br />
<br />
Get it from AUR: {{AUR|android-notifier-desktop}}<br />
<br />
==Configuration==<br />
<br />
To configure android-notifier, run {{ic|/usr/share/android-notifier-desktop/run.sh -p}}. <br />
<br />
To show help run {{ic|/usr/share/android-notifier-desktop/run.sh -h}}.<br />
<br />
==Starting android-notifier==<br />
<br />
Add this command to for example .xinitrc:<br />
<br />
/usr/share/android-notifier-desktop/run.sh &<br />
<br />
Or just run it from terminal.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Cinnamon&diff=332491Cinnamon2014-08-26T13:23:50Z<p>Ilfugiuliopascal: /* Workspaces */</p>
<hr />
<div>[[Category:Desktop environments]]<br />
[[ja:Cinnamon]]<br />
[[ru:Cinnamon]]<br />
[[tr:Cinnamon_Masaüstü_Ortamı]]<br />
{{Related articles start}}<br />
{{Related|Nemo}}<br />
{{Related|GNOME}}<br />
{{Related|MATE}}<br />
{{Related|Desktop environment}}<br />
{{Related|Display manager}}<br />
{{Related articles end}}<br />
<br />
[http://cinnamon.linuxmint.com/ Cinnamon] is a Linux desktop which provides advanced innovative features and a traditional user experience. <br />
The desktop layout is similar to GNOME Panel (GNOME 2); however, the underlying technology was forked from GNOME Shell (GNOME 3).<br />
The emphasis is put on making users feel at home and providing them with an easy to use and comfortable desktop experience. As of version 2.0, Cinnamon is a complete desktop environment and not merely a frontend for GNOME like GNOME Shell and Unity.<br />
<br />
== Installation ==<br />
<br />
Cinnamon can be [[Pacman|installed]] with the package {{Pkg|cinnamon}}, available in the [[official repositories]].<br />
<br />
To install additional Cinnamon themes, applets and extensions, you may wish to add the [[Unofficial user repositories#cinnamon|Cinnamon unofficial repository]] to your {{ic|pacman.conf}}.<br />
<br />
== Starting Cinnamon ==<br />
<br />
=== Graphical log-in ===<br />
<br />
Choose ''Cinnamon'' or ''Cinnamon (Software Rendering)'' from the menu in a [[display manager]] of choice. Cinnamon is the 3D accelerated version, which should be normally used. If you experience problems with your video driver (e.g. artifacts or crashing), try the ''Cinnamon (Software Rendering)'' session, which disables 3D acceleration.<br />
<br />
=== Starting Cinnamon manually ===<br />
<br />
If you prefer to start Cinnamon manually from the console, add the following line to your {{ic|~/.xinitrc}} file:<br />
<br />
{{hc|~/.xinitrc|<br />
exec cinnamon-session<br />
}}<br />
<br />
If the ''Cinnamon (Software Rendering)'' session is required, use {{ic|cinnamon-session-cinnamon2d}} instead of {{ic|cinnamon-session}}.<br />
<br />
After the {{ic|exec}} command is placed, Cinnamon can be launched by typing {{ic|startx}}. See [[xinitrc]] for details.<br />
<br />
{{Note|Versions before Cinnamon 1.9 used the GNOME session manager. For versions of Cinnamon currently in the [[official repositories]], use {{ic|cinnamon-session}} instead of {{ic|gnome-session-cinnamon}}.}}<br />
<br />
== Configuration ==<br />
<br />
Cinnamon is quite easy to configure &mdash; a lot of the configuration that most people will want can be done graphically. Its usability can be customized with [http://cinnamon-spices.linuxmint.com/applets applets] and [http://cinnamon-spices.linuxmint.com/extensions extensions], and also it supports [http://cinnamon-spices.linuxmint.com/themes theming]. <br />
<br />
=== Cinnamon Settings ===<br />
<br />
Simply run the following command:<br />
{{bc|$ cinnamon-settings}}<br />
<br />
Each settings panel can be accessed directly with the following commands:<br />
<br />
{{bc|$ cinnamon-settings panel<br />
$ cinnamon-settings calendar<br />
$ cinnamon-settings themes<br />
$ cinnamon-settings applets<br />
$ cinnamon-settings windows<br />
$ cinnamon-settings fonts<br />
$ cinnamon-settings hotcorner}} and so on.<br />
<br />
==== Networking Support ====<br />
<br />
To enable networking support in cinnamon, install and enable [[NetworkManager]].<br />
<br />
==== Bluetooth support in cinnamon-settings and the panel ====<br />
{{warning|{{AUR|cinnamon-bluetooth}} is incompatible with GNOME 3.10. See the [[Bluetooth]] article for alternatives.}}<br />
<br />
A GNOME bluetooth frontend for Cinnamon Panel and Cinnamon Settings is available in the AUR under the name {{AUR|cinnamon-bluetooth}}.<br />
<br />
=== Installing applets/extensions ===<br />
<br />
The difference between an applet and an extension is that an '''applet''' is basically an addition to a panel, whereas an '''extension''' can completely change the Cinnamon experience and can do much more than an applet.<br />
<br />
There are quite a few packages in the [[AUR]] ([https://aur.archlinux.org/packages.php?O=0&K=cinnamon-&do_Search=Go package search]). The process described here is a generic installation process.<br />
<br />
Installing applets in Cinnamon is relatively easy. First visit [http://cinnamon-spices.linuxmint.com/applets Cinnamon Applets] to see all of the current applets. Download the zip file for the desired applet, and extract to {{ic|~/.local/share/cinnamon/applets/}} or {{ic|/usr/share/cinnamon/applets}}.<br />
<br />
Then run<br />
<br />
$ cinnamon-settings applets<br />
<br />
to bring up the graphical applets manager. If the applet does not show up, press {{ic|Alt+F2}} and type {{ic|r}} and press {{ic|Enter}}. This will restart cinnamon and likely, the new applet. The process is analogous for extensions, with the only difference being that directories titled "applets" can be changed to "extensions".<br />
<br />
== Tips and tricks ==<br />
<br />
=== Creating custom applets/themes ===<br />
<br />
The official tutorial on creating an '''applet''' can be found [http://cinnamon.linuxmint.com/?p=156 here], and on creating a '''custom theme''' can be found [http://cinnamon.linuxmint.com/?p=144 here].<br />
<br />
=== Default desktop background wallpaper path ===<br />
<br />
When you add a wallpaper from a custom path in Cinnamon Settings, Cinnamon copies it to {{ic|~/.cinnamon/backgrounds}}. Thus, with every change of your wallpaper you would have to add your updated wallpaper again from the settings menu or copy / symlink it manually to {{ic|~/.cinnamon/backgrounds}}.<br />
<br />
=== Show home, filesystem desktop icons ===<br />
<br />
By default Cinnamon starts with desktop icons enabled but with no desktop icons on screen. To show desktop icons for the home folder, the filesystem, the trash, mounted volumes and network servers open Cinnamon settings and click on desktop. Enable the checkboxes of the icons you want to see on screen.<br />
<br />
=== Adding custom command launchers to the Menu applet ===<br />
<br />
The Menu applet supports launching custom commands. Right click on the applet, click on ''Configure...'' and then ''Open the menu editor''. Select a sub-menu (or create a new one) and select ''New Item''. Set ''Name'', ''Command'' and ''Comment''. Check the launch in terminal checkbox if needed. Leave unchecked for graphical applications. Click ''OK'' and close the menu editor afterwards. The launcher is added to the menu.<br />
<br />
=== Workspaces ===<br />
<br />
A workspace pager can be added to the panel. Right click the panel and choose the option 'Add applets to the panel.' Add the 'Workspace switch applet to the panel. To change its position right click on the panel and change the 'Panel edit mode' on/off switch to on. Click and drag the switcher to the desired position and turn the panel edit mode off when finished.<br />
<br />
By default there are 2 workspaces. To add more, hit {{ic|Control+Alt+Up}} to show all workspaces. Then click on the plus sign button on the right of the screen to add more workspaces.<br />
<br />
Alternatively, you can choose the number by command-line:<br />
$ gsettings set org.cinnamon number-workspaces 4<br />
Replacing 4 with the number of workspaces you want. To apply the change you need to reboot Cinnamon (for example : Alt-F2 and command r).<br />
<br />
=== Hide desktop icons ===<br />
<br />
The desktop icons rendering feature is enabled in nemo by default. To disable this feature, change the setting with the following command: <br />
<br />
$ gsettings set org.nemo.desktop show-desktop-icons false<br />
<br />
=== GTK themes and icons ===<br />
<br />
Linux Mint styled themes and icons can be installed from AUR using packages {{AUR|mint-themes}} and {{AUR|mint-x-icons}}. The theme can be edited in System <tt>Settings -> Themes -> Other settings</tt>.<br />
<br />
=== Resize windows by mouse ===<br />
<br />
To resize windows with {{ic|Alt+Right click}}, use {{ic|gsettings}}:<br />
<br />
gsettings set org.cinnamon.desktop.wm.preferences resize-with-right-button true<br />
<br />
=== Portable keybindings ===<br />
<br />
To export your keyboard shortcut keys, you should do:<br />
<br />
dconf dump /org/cinnamon/muffin/keybindings/ >keybindings-backup.dconf<br />
<br />
To later import it (for example) on another computer, do:<br />
<br />
dconf load /org/cinnamon/muffin/keybindings/ <keybindings-backup.dconf<br />
<br />
== Troubleshooting ==<br />
<br />
=== QGtkStyle unable to detect the current theme ===<br />
<br />
Installing {{Pkg|libgnome-data}} solves the problem partially, and QGtkStyle will detect the current GTK+ theme. However, to set the same icon and cursor theme, users must specify them explicitly.<br />
<br />
The icon theme for Qt apps can be configured by the following command:<br />
<br />
$ gconftool-2 --set --type string /desktop/gnome/interface/icon_theme Faenza-Dark<br />
<br />
This sets the icon theme to Faenza-Dark located in {{ic|/usr/share/icons/Faenza-Dark}}. <br />
<br />
The cursor theme for Qt apps can be selected by creating a symbolic link:<br />
<br />
$ mkdir ~/.icons<br />
$ ln -s /usr/share/icons/Adwaita ~/.icons/default<br />
<br />
This sets the cursor theme to Adwaita located in {{ic|/usr/share/icons/Adwaita}}.<br />
<br />
=== Pressing power buttons suspend the system ===<br />
<br />
This is the default behaviour. To change the setting open the {{ic|cinnamon-settings}} panel and click on the "Power Management" option. Change the "When the power button is pressed" option to your desired behaviour.<br />
<br />
=== Volume level is not saved ===<br />
<br />
The volume level is not be saved after reboot. The volume will be at 0 but not muted. Installing {{Pkg|alsa-utils}} will solve the problem.<br />
<br />
=== Applets not working ===<br />
<br />
If audio or network applets don't work the user may be required to be added to the relevant groups (audio, network):<br />
<br />
$ gpasswd -a [user] [group]<br />
<br />
=== cinnamon-settings: No module named Image ===<br />
<br />
If {{ic|cinnamon-settings}} does not start with the message that it cannot find a certain module, e.g. the Image module, it is likely that it uses outdated compiled files which refer to no longer existing file locations. In this case remove all {{ic|*.pyc}} files in {{ic|/usr/lib/cinnamon-settings}} and its sub-folders.<br />
<br />
=== Power settings do not work ===<br />
<br />
Update {{Pkg|cinnamon-control-center}} to version 2.2.10-2, and update {{Pkg|cinnamon-settings-daemon}} to version 2.2.4-2. These packages contain compatibility patches for {{Pkg|upower}}-0.99.0.<br />
<br />
=== Cannot add/remove/change languages used in Cinnamon ===<br />
<br />
The language module was removed from the Cinnamon Control Panel with the release of Cinnamon 2.2 and provided a new package for changing the language settings.<br />
<br />
'''To add/remove languages''', see [[Locale]].<br />
<br />
'''To change between enabled languages''', install the {{AUR|mintlocale}} package.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Cinnamon&diff=332490Cinnamon2014-08-26T13:23:32Z<p>Ilfugiuliopascal: /* Workspaces */ alternative way to change number of workspaces</p>
<hr />
<div>[[Category:Desktop environments]]<br />
[[ja:Cinnamon]]<br />
[[ru:Cinnamon]]<br />
[[tr:Cinnamon_Masaüstü_Ortamı]]<br />
{{Related articles start}}<br />
{{Related|Nemo}}<br />
{{Related|GNOME}}<br />
{{Related|MATE}}<br />
{{Related|Desktop environment}}<br />
{{Related|Display manager}}<br />
{{Related articles end}}<br />
<br />
[http://cinnamon.linuxmint.com/ Cinnamon] is a Linux desktop which provides advanced innovative features and a traditional user experience. <br />
The desktop layout is similar to GNOME Panel (GNOME 2); however, the underlying technology was forked from GNOME Shell (GNOME 3).<br />
The emphasis is put on making users feel at home and providing them with an easy to use and comfortable desktop experience. As of version 2.0, Cinnamon is a complete desktop environment and not merely a frontend for GNOME like GNOME Shell and Unity.<br />
<br />
== Installation ==<br />
<br />
Cinnamon can be [[Pacman|installed]] with the package {{Pkg|cinnamon}}, available in the [[official repositories]].<br />
<br />
To install additional Cinnamon themes, applets and extensions, you may wish to add the [[Unofficial user repositories#cinnamon|Cinnamon unofficial repository]] to your {{ic|pacman.conf}}.<br />
<br />
== Starting Cinnamon ==<br />
<br />
=== Graphical log-in ===<br />
<br />
Choose ''Cinnamon'' or ''Cinnamon (Software Rendering)'' from the menu in a [[display manager]] of choice. Cinnamon is the 3D accelerated version, which should be normally used. If you experience problems with your video driver (e.g. artifacts or crashing), try the ''Cinnamon (Software Rendering)'' session, which disables 3D acceleration.<br />
<br />
=== Starting Cinnamon manually ===<br />
<br />
If you prefer to start Cinnamon manually from the console, add the following line to your {{ic|~/.xinitrc}} file:<br />
<br />
{{hc|~/.xinitrc|<br />
exec cinnamon-session<br />
}}<br />
<br />
If the ''Cinnamon (Software Rendering)'' session is required, use {{ic|cinnamon-session-cinnamon2d}} instead of {{ic|cinnamon-session}}.<br />
<br />
After the {{ic|exec}} command is placed, Cinnamon can be launched by typing {{ic|startx}}. See [[xinitrc]] for details.<br />
<br />
{{Note|Versions before Cinnamon 1.9 used the GNOME session manager. For versions of Cinnamon currently in the [[official repositories]], use {{ic|cinnamon-session}} instead of {{ic|gnome-session-cinnamon}}.}}<br />
<br />
== Configuration ==<br />
<br />
Cinnamon is quite easy to configure &mdash; a lot of the configuration that most people will want can be done graphically. Its usability can be customized with [http://cinnamon-spices.linuxmint.com/applets applets] and [http://cinnamon-spices.linuxmint.com/extensions extensions], and also it supports [http://cinnamon-spices.linuxmint.com/themes theming]. <br />
<br />
=== Cinnamon Settings ===<br />
<br />
Simply run the following command:<br />
{{bc|$ cinnamon-settings}}<br />
<br />
Each settings panel can be accessed directly with the following commands:<br />
<br />
{{bc|$ cinnamon-settings panel<br />
$ cinnamon-settings calendar<br />
$ cinnamon-settings themes<br />
$ cinnamon-settings applets<br />
$ cinnamon-settings windows<br />
$ cinnamon-settings fonts<br />
$ cinnamon-settings hotcorner}} and so on.<br />
<br />
==== Networking Support ====<br />
<br />
To enable networking support in cinnamon, install and enable [[NetworkManager]].<br />
<br />
==== Bluetooth support in cinnamon-settings and the panel ====<br />
{{warning|{{AUR|cinnamon-bluetooth}} is incompatible with GNOME 3.10. See the [[Bluetooth]] article for alternatives.}}<br />
<br />
A GNOME bluetooth frontend for Cinnamon Panel and Cinnamon Settings is available in the AUR under the name {{AUR|cinnamon-bluetooth}}.<br />
<br />
=== Installing applets/extensions ===<br />
<br />
The difference between an applet and an extension is that an '''applet''' is basically an addition to a panel, whereas an '''extension''' can completely change the Cinnamon experience and can do much more than an applet.<br />
<br />
There are quite a few packages in the [[AUR]] ([https://aur.archlinux.org/packages.php?O=0&K=cinnamon-&do_Search=Go package search]). The process described here is a generic installation process.<br />
<br />
Installing applets in Cinnamon is relatively easy. First visit [http://cinnamon-spices.linuxmint.com/applets Cinnamon Applets] to see all of the current applets. Download the zip file for the desired applet, and extract to {{ic|~/.local/share/cinnamon/applets/}} or {{ic|/usr/share/cinnamon/applets}}.<br />
<br />
Then run<br />
<br />
$ cinnamon-settings applets<br />
<br />
to bring up the graphical applets manager. If the applet does not show up, press {{ic|Alt+F2}} and type {{ic|r}} and press {{ic|Enter}}. This will restart cinnamon and likely, the new applet. The process is analogous for extensions, with the only difference being that directories titled "applets" can be changed to "extensions".<br />
<br />
== Tips and tricks ==<br />
<br />
=== Creating custom applets/themes ===<br />
<br />
The official tutorial on creating an '''applet''' can be found [http://cinnamon.linuxmint.com/?p=156 here], and on creating a '''custom theme''' can be found [http://cinnamon.linuxmint.com/?p=144 here].<br />
<br />
=== Default desktop background wallpaper path ===<br />
<br />
When you add a wallpaper from a custom path in Cinnamon Settings, Cinnamon copies it to {{ic|~/.cinnamon/backgrounds}}. Thus, with every change of your wallpaper you would have to add your updated wallpaper again from the settings menu or copy / symlink it manually to {{ic|~/.cinnamon/backgrounds}}.<br />
<br />
=== Show home, filesystem desktop icons ===<br />
<br />
By default Cinnamon starts with desktop icons enabled but with no desktop icons on screen. To show desktop icons for the home folder, the filesystem, the trash, mounted volumes and network servers open Cinnamon settings and click on desktop. Enable the checkboxes of the icons you want to see on screen.<br />
<br />
=== Adding custom command launchers to the Menu applet ===<br />
<br />
The Menu applet supports launching custom commands. Right click on the applet, click on ''Configure...'' and then ''Open the menu editor''. Select a sub-menu (or create a new one) and select ''New Item''. Set ''Name'', ''Command'' and ''Comment''. Check the launch in terminal checkbox if needed. Leave unchecked for graphical applications. Click ''OK'' and close the menu editor afterwards. The launcher is added to the menu.<br />
<br />
=== Workspaces ===<br />
<br />
A workspace pager can be added to the panel. Right click the panel and choose the option 'Add applets to the panel.' Add the 'Workspace switch applet to the panel. To change its position right click on the panel and change the 'Panel edit mode' on/off switch to on. Click and drag the switcher to the desired position and turn the panel edit mode off when finished.<br />
<br />
By default there are 2 workspaces. To add more, hit {{ic|Control+Alt+Up}} to show all workspaces. Then click on the plus sign button on the right of the screen to add more workspaces.<br />
<br />
Alternatively you can choose the number by command-line:<br />
$ gsettings set org.cinnamon number-workspaces 4<br />
Replacing 4 with the number of workspaces you want. To apply the change you need to reboot Cinnamon (for example : Alt-F2 and command r).<br />
<br />
=== Hide desktop icons ===<br />
<br />
The desktop icons rendering feature is enabled in nemo by default. To disable this feature, change the setting with the following command: <br />
<br />
$ gsettings set org.nemo.desktop show-desktop-icons false<br />
<br />
=== GTK themes and icons ===<br />
<br />
Linux Mint styled themes and icons can be installed from AUR using packages {{AUR|mint-themes}} and {{AUR|mint-x-icons}}. The theme can be edited in System <tt>Settings -> Themes -> Other settings</tt>.<br />
<br />
=== Resize windows by mouse ===<br />
<br />
To resize windows with {{ic|Alt+Right click}}, use {{ic|gsettings}}:<br />
<br />
gsettings set org.cinnamon.desktop.wm.preferences resize-with-right-button true<br />
<br />
=== Portable keybindings ===<br />
<br />
To export your keyboard shortcut keys, you should do:<br />
<br />
dconf dump /org/cinnamon/muffin/keybindings/ >keybindings-backup.dconf<br />
<br />
To later import it (for example) on another computer, do:<br />
<br />
dconf load /org/cinnamon/muffin/keybindings/ <keybindings-backup.dconf<br />
<br />
== Troubleshooting ==<br />
<br />
=== QGtkStyle unable to detect the current theme ===<br />
<br />
Installing {{Pkg|libgnome-data}} solves the problem partially, and QGtkStyle will detect the current GTK+ theme. However, to set the same icon and cursor theme, users must specify them explicitly.<br />
<br />
The icon theme for Qt apps can be configured by the following command:<br />
<br />
$ gconftool-2 --set --type string /desktop/gnome/interface/icon_theme Faenza-Dark<br />
<br />
This sets the icon theme to Faenza-Dark located in {{ic|/usr/share/icons/Faenza-Dark}}. <br />
<br />
The cursor theme for Qt apps can be selected by creating a symbolic link:<br />
<br />
$ mkdir ~/.icons<br />
$ ln -s /usr/share/icons/Adwaita ~/.icons/default<br />
<br />
This sets the cursor theme to Adwaita located in {{ic|/usr/share/icons/Adwaita}}.<br />
<br />
=== Pressing power buttons suspend the system ===<br />
<br />
This is the default behaviour. To change the setting open the {{ic|cinnamon-settings}} panel and click on the "Power Management" option. Change the "When the power button is pressed" option to your desired behaviour.<br />
<br />
=== Volume level is not saved ===<br />
<br />
The volume level is not be saved after reboot. The volume will be at 0 but not muted. Installing {{Pkg|alsa-utils}} will solve the problem.<br />
<br />
=== Applets not working ===<br />
<br />
If audio or network applets don't work the user may be required to be added to the relevant groups (audio, network):<br />
<br />
$ gpasswd -a [user] [group]<br />
<br />
=== cinnamon-settings: No module named Image ===<br />
<br />
If {{ic|cinnamon-settings}} does not start with the message that it cannot find a certain module, e.g. the Image module, it is likely that it uses outdated compiled files which refer to no longer existing file locations. In this case remove all {{ic|*.pyc}} files in {{ic|/usr/lib/cinnamon-settings}} and its sub-folders.<br />
<br />
=== Power settings do not work ===<br />
<br />
Update {{Pkg|cinnamon-control-center}} to version 2.2.10-2, and update {{Pkg|cinnamon-settings-daemon}} to version 2.2.4-2. These packages contain compatibility patches for {{Pkg|upower}}-0.99.0.<br />
<br />
=== Cannot add/remove/change languages used in Cinnamon ===<br />
<br />
The language module was removed from the Cinnamon Control Panel with the release of Cinnamon 2.2 and provided a new package for changing the language settings.<br />
<br />
'''To add/remove languages''', see [[Locale]].<br />
<br />
'''To change between enabled languages''', install the {{AUR|mintlocale}} package.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Install_Arch_Linux_from_existing_Linux&diff=311776Install Arch Linux from existing Linux2014-04-25T13:23:01Z<p>Ilfugiuliopascal: /* Method 1: Using the Bootstrap Image */ Update at the april bootstrap image</p>
<hr />
<div>[[Category:Getting and installing Arch]]<br />
[[es:Install from Existing Linux]]<br />
[[fr:Install chroot]]<br />
[[it:Install from Existing Linux]]<br />
[[ja:Install from Existing Linux]]<br />
[[pt:Install from Existing Linux]]<br />
[[ru:Install from Existing Linux]]<br />
[[uk:Install from Existing Linux]]<br />
[[zh-CN:Install from Existing Linux]]<br />
[[zh-TW:Install from Existing Linux]]<br />
This document describes the bootstrapping process required to install Arch Linux from a running Linux host system.<br />
After bootstrapping, the installation proceeds as described in the [[Installation guide]].<br />
<br />
Installing Arch Linux from a running Linux is useful for:<br />
* remotely installing Arch Linux, e.g. a (virtual) root server<br />
* replacing an existing Linux without a LiveCD (see [[#Replacing the Existing System without a LiveCD]])<br />
* creating a new Linux distribution or LiveCD based on Arch Linux<br />
* creating an Arch Linux chroot environment, e.g. for a Docker base container<br />
* [[Diskless_network_boot_NFS_root|rootfs-over-NFS for diskless machines]]<br />
<br />
The goal of the bootstrapping procedure is to setup an environment from which {{Pkg|arch-install-scripts}} (such as {{ic|pacstrap}} and {{ic|arch-root}}) run.<br />
This goal is achieved by installing {{Pkg|arch-install-scripts}} natively on the host system, or setting up an Arch Linux-based chroot.<br />
<br />
If the host system runs Arch Linux, installing {{Pkg|arch-install-scripts}} is straightforward.<br />
<br />
{{Note|This guide requires that the existing host system be able to execute the new target Arch Linux architecture programs. In the case of an x86_64 host, it is possible to use i686-pacman to build a 32-bit chroot environment. See [[Arch64 Install bundled 32bit system]]. However it is not so easy to build a 64-bit environment when the host only supports running 32-bit programs.}}<br />
<br />
==Arch Linux-based chroot==<br />
The idea is to run an Arch system inside the host system.<br />
The actual installation is then executed from this Arch system.<br />
This nested system is contained inside a chroot.<br />
Three methods to setup and enter this chroot are presented below, from the easiest to the most complicated.<br />
<br />
{{Note|Your host system must run Linux 2.6.32 or later.}}<br />
{{Note|Select only one of the following three methods and then read the rest of the article to complete the install.}}<br />
===Method 1: Using the Bootstrap Image===<br />
<br />
Download the bootstrap image from a [https://www.archlinux.org/download mirror]:<br />
$ curl -O http://mirrors.kernel.org/archlinux/iso/2014.04.01/archlinux-bootstrap-2014.04.01-x86_64.tar.gz<br />
Extract the tarball:<br />
# cd /tmp<br />
# tar xzf <path-to-bootstrap-image>/archlinux-bootstrap-2014.04.01-x86_64.tar.gz<br />
Select a repository server:<br />
# nano /tmp/root.x86_64/etc/pacman.d/mirrorlist<br />
<br />
{{Note|If you are bootstrapping an i686 image from an x86_64 host system, you must also edit {{Ic|/tmp/root.i686/etc/pacman.conf}} and explicitly define {{Ic|1=Architecture = i686}} in order for pacman to pull the proper i686 packages.}}<br />
<br />
Enter the chroot<br />
* If you have bash 4 or later installed:<br />
# /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/<br />
* Else run the following commands:<br />
# cp /etc/resolv.conf /tmp/root.x86_64/etc<br />
# mount --rbind /proc /tmp/root.x86_64/proc<br />
# mount --rbind /sys /tmp/root.x86_64/sys<br />
# mount --rbind /dev /tmp/root.x86_64/dev<br />
# mount --rbind /run /tmp/root.x86_64/run<br />
(assuming /run exists on your system)<br />
# chroot /tmp/root.x86_64/<br />
<br />
===Method 2: Using the LiveCD Image===<br />
<br />
It is possible to mount the root image of the latest Arch Linux installation media and then chroot into it. This method has the advantage of providing you with a working Arch Linux installation right within your host system without the need to prepare it by installing specific packages.<br />
<br />
{{Note|Before proceeding, make sure the latest version of [http://squashfs.sourceforge.net/ squashfs] is installed on the host system. Otherwise you will get errors like: {{ic|FATAL ERROR aborting: uncompress_inode_table: failed to read block}}.}}<br />
<br />
* The root image can be found on one of the [https://www.archlinux.org/download mirrors] under either arch/x86_64/ or arch/i686/ depending on the desired architecture. The squashfs format is not editable so we unsquash the root image and then mount it.<br />
<br />
*To unsquash the root image, run<br />
{{bc|# unsquashfs -d /squashfs-root root-image.fs.sfs}}<br />
<br />
* Now you can loop mount the root image<br />
{{bc|<br />
# mkdir /arch<br />
# mount -o loop /squashfs-root/root-image.fs /arch<br />
}}<br />
<br />
* Before [[Change Root|chrooting]] to it, we need to set up some mount points and copy the resolv.conf for networking.<br />
{{bc|<br />
# mount -t proc none /arch/proc<br />
# mount -t sysfs none /arch/sys<br />
# mount -o bind /dev /arch/dev<br />
# mount -o bind /dev/pts /arch/dev/pts # important for pacman (for signature check)<br />
# cp -L /etc/resolv.conf /arch/etc #this is needed to use networking within the chroot<br />
}}<br />
<br />
* Now everything is prepared to chroot into your newly installed Arch environment<br />
{{bc|# chroot /arch bash}}<br />
<br />
===Method 3: Assembling the chroot Manually (with a script)===<br />
<br />
The script creates a directory called {{ic|archinstall-pkg}} and downloads the required packages in it. It then extracts them in the {{ic|archinstall-chroot}} directory. Finally, it prepares mount points, configures pacman and enters a chroot.<br />
<br />
{{hc|archinstall-bootstrap.sh|<nowiki><br />
#!/bin/bash<br />
# last edited 02. March 2014<br />
# This script is inspired on the archbootstrap script.<br />
<br />
FIRST_PACKAGE=(filesystem)<br />
BASH_PACKAGES=(glibc ncurses readline bash)<br />
PACMAN_PACKAGES=(acl archlinux-keyring attr bzip2 coreutils curl e2fsprogs expat gnupg gpgme keyutils krb5 libarchive libassuan libgpg-error libgcrypt libssh2 lzo2 openssl pacman xz zlib)<br />
# EXTRA_PACKAGES=(pacman-mirrorlist tar libcap arch-install-scripts util-linux systemd)<br />
PACKAGES=(${FIRST_PACKAGE[*]} ${BASH_PACKAGES[*]} ${PACMAN_PACKAGES[*]})<br />
<br />
# Change to the mirror which best fits for you<br />
# USA<br />
MIRROR='http://mirrors.kernel.org/archlinux' <br />
# Germany<br />
# MIRROR='http://archlinux.limun.org'<br />
<br />
# You can set the ARCH variable to i686 or x86_64<br />
ARCH=`uname -m`<br />
LIST=`mktemp`<br />
CHROOT_DIR=archinstall-chroot<br />
DIR=archinstall-pkg<br />
mkdir -p "$DIR"<br />
mkdir -p "$CHROOT_DIR"<br />
# Create a list of filenames for the arch packages<br />
wget -q -O- "$MIRROR/core/os/$ARCH/" | sed -n "s|.*href=\"\\([^\"]*xz\\)\".*|\\1|p" >> $LIST<br />
# Download and extract each package.<br />
for PACKAGE in ${PACKAGES[*]}; do<br />
FILE=`grep "$PACKAGE-[0-9]" $LIST|head -n1`<br />
wget "$MIRROR/core/os/$ARCH/$FILE" -c -O "$DIR/$FILE"<br />
xz -dc "$DIR/$FILE" | tar x -k -C "$CHROOT_DIR"<br />
rm -f "$CHROOT_DIR/.PKGINFO" "$CHROOT_DIR/.MTREE" "$CHROOT_DIR/.INSTALL"<br />
done<br />
# Create mount points<br />
mount -t proc proc "$CHROOT_DIR/proc/"<br />
mount -t sysfs sys "$CHROOT_DIR/sys/"<br />
mount -o bind /dev "$CHROOT_DIR/dev/"<br />
mkdir -p "$CHROOT_DIR/dev/pts"<br />
mount -t devpts pts "$CHROOT_DIR/dev/pts/"<br />
<br />
# Hash for empty password Created by doing: openssl passwd -1 -salt ihlrowCo and entering an empty password (just press enter)<br />
# echo 'root:$1$ihlrowCo$sF0HjA9E8up9DYs258uDQ0:10063:0:99999:7:::' > "$CHROOT_DIR/etc/shadow"<br />
# echo "myhost" > "$CHROOT_DIR/etc/hostname"<br />
[ -f "/etc/resolv.conf" ] && cp "/etc/resolv.conf" "$CHROOT_DIR/etc/"<br />
<br />
mkdir -p "$CHROOT_DIR/etc/pacman.d/"<br />
echo "Server = $MIRROR/\$repo/os/$ARCH" >> "$CHROOT_DIR/etc/pacman.d/mirrorlist"<br />
<br />
chroot $CHROOT_DIR pacman-key --init<br />
chroot $CHROOT_DIR pacman-key --populate archlinux<br />
chroot $CHROOT_DIR pacman -Syu pacman --force<br />
[ -f "/etc/resolv.conf" ] && cp "/etc/resolv.conf" "$CHROOT_DIR/etc/"<br />
echo "Server = $MIRROR/\$repo/os/$ARCH" >> "$CHROOT_DIR/etc/pacman.d/mirrorlist"<br />
chroot $CHROOT_DIR<br />
</nowiki>}}<br />
<br />
===Using the chroot Environment===<br />
<br />
====Initializing pacman keyring====<br />
Before starting the installation, pacman keys need to be setup. Before running the following two commands read [[pacman-key#Initializing the keyring]] to understand the entropy requirements:<br />
{{bc|<br />
# pacman-key --init<br />
# pacman-key --populate archlinux<br />
}}<br />
<br />
====Installation====<br />
Follow the [[Installation guide#Mount the partitions|Mount the partitions]] and [[Installation guide#Install the base system|Install the base system]] sections of the [[Installation guide]].<br />
<br />
=====Debian-based host=====<br />
On Debian-based host systems, {{ic|pacstrap}} produces the following error:<br />
# pacstrap /mnt base<br />
# ==> Creating install root at /mnt<br />
# mount: mount point /mnt/dev/shm is a symbolic link to nowhere<br />
# ==> ERROR: failed to setup API filesystems in new root<br />
<br />
In Debian, /dev/shm points to /run/shm. However, in the Arch-based chroot, /run/shm does not exist and the link is broken. To correct this error, create a directory /run/shm:<br />
# mkdir /run/shm<br />
<br />
====Configure the system====<br />
<br />
From that point, simply follow the [[Installation guide#Mount the partitions|Mount the partitions]] section of the [[Installation guide]] and following sections.<br />
<br />
==Replacing the Existing System without a LiveCD==<br />
Find ~500MB of free space somewhere on the disk, e.g. by partitioning a swap partition.<br />
Install the new Arch Linux system there, reboot into the newly created system, and [[Full system backup with rsync#With_a_single_command|rsync the entire system]] to the primary partition.<br />
Fix the bootloader configuration before rebooting.</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=311681Nextcloud2014-04-24T14:16:15Z<p>Ilfugiuliopascal: Spaces removed</p>
<hr />
<div>[[Category:Web Server]]<br />
[[fr:Owncloud]]<br />
[[ja:Owncloud]]<br />
{{Related articles start}}<br />
{{Related|LAMP}}<br />
{{Related|Nginx}}<br />
{{Related|Raspberry_Pi}}<br />
{{Related|OpenSSL}}<br />
{{Related articles end}}<br />
From [[Wikipedia:ownCloud|Wikipedia]]:<br />
: ''ownCloud is a software suite that provides a location-independent storage area for data (cloud storage).''<br />
The ownCloud installation and configuration mainly depends on what web server and database you decide to run. Currently the wiki discusses the [[Owncloud#Apache_configuration|Apache]] and [[Owncloud#Nginx_.2B_uwsgi_php_configuration|Nginx]] configurations.<br />
== First steps ==<br />
<br />
[[pacman|Install]] {{Pkg|owncloud}} from the [[official repositories]]. Alternatively see the packages available in the [[Arch User Repository]]: [https://aur.archlinux.org/packages.php?K=owncloud&O=0].<br />
Uncomment extensions in {{ic|/etc/php/php.ini}}:<br />
gd.so<br />
intl.so<br />
openssl.so<br />
xmlrpc.so<br />
zip.so<br />
iconv.so<br />
<br />
==== Database support ====<br />
Depending on which database backend you are going to use uncomment either one of the following extensions in {{ic|/etc/php/php.ini}}:<br />
{| class="wikitable"<br />
!SQLite!!MySQL!!PostgreSQL<br />
|-<br />
|<br />
sqlite.so<br />
sqlite3.so<br />
pdo_sqlite.so<br />
|<br />
mysql.so<br />
mysqli.so<br />
pdo_mysql.so<br />
|<br />
pgsql.so<br />
pdo_pgsql.so<br />
|-<br />
|}<br />
Don't forget to install the appropriate php-module for the database. In the PostgreSQL case thats {{Pkg|php-pgsql}} or for SQLite {{Pkg|php-sqlite}}.<br />
<br />
==== Exif support ====<br />
Additionally install exif support with<br />
# pacman -S exiv2<br />
and uncomment the exif.so extension in php.ini<br />
<br />
== Docker ==<br />
<br />
A quick and safe alternative to installing and configuring ownCloud on your own is to use a [[Docker]] linux container. You can find several images of fully working LAMP stack with pre-installed ownCloud in the [https://index.docker.io/search?q=ownCloud Docker repositories]. Docker containers are generally safer then a chroot environment and the overhead is very low, ownCloud in docker works smoothly even on quite old machines. The whole setup including installing Docker and ownCloud image is considerably easier and quicker than a native installation.<br />
<br />
== Apache configuration ==<br />
<br />
=== Installation ===<br />
<br />
Set up the [[LAMP]] stack. <br />
<br />
You will probably need to install the MDB2 pear package as well. Install {{pkg|php-pear}}, then:<br />
# pear install MDB2<br />
<br />
# Copy {{ic|/etc/webapps/owncloud/apache.example.conf}} to {{ic|/etc/httpd/conf/extra/owncloud.conf}} (version 6+)<br />
# Add the following lines into {{ic|/etc/httpd/conf/httpd.conf}} (the php5 line should have already been added during the LAMP stack setup):<br />
Include /etc/httpd/conf/extra/owncloud.conf<br />
LoadModule php5_module modules/libphp5.so<br />
Include conf/extra/php5_module.conf<br />
<br />
Since apache 2.4 you might need to adjust owncloud.conf and replace<br />
Order allow,deny<br />
Allow from all<br />
with <br />
Require all granted<br />
<br />
==== Disable Webdav ====<br />
Owncloud comes with its own Webdav enabled which conflict. Owncloud [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 recommends] to disable mod_dav and mod_dav_fs. This should be done in {{ic|/etc/httpd/conf/httpd.conf}}<br />
<br />
Now [[Daemons#Restarting|restart]] httpd (Apache)<br />
# systemctl restart httpd<br />
Open [http://localhost http://localhost] in your browser. You should now be able to create a user account and follow the installation wizard.<br />
<br />
=== Custom configurations ===<br />
<br />
==== Filesize limitations ====<br />
<br />
With the default configuration ownCloud only allows the upload of filesizes less than 2MB.<br />
This can be changed by changing the following line in {{ic|/etc/php/php.ini}} to your liking.<br />
<br />
{{Warning|As of version 4.0 this is no longer necessary! The maximum upload size is now set via the ownCloud gui}}<br />
upload_max_filesize = 2M<br />
<br />
As of version 4.5, upload limits are set in {{ic|/usr/share/webapps/owncloud/.htaccess}}. This won't work if [[LAMP#Using_php5_with_apache2-mpm-worker_and_mod_fcgid|PHP is set up to run as CGI]], so you need to change the limits in {{ic|/etc/php/php.ini}}. You also need to change open_basedir.<br />
{{bc|<nowiki><br />
upload_max_filesize = 512M<br />
post_max_size = 512M<br />
memory_limit = 512M<br />
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/<br />
</nowiki>}}<br />
<br />
==== Running ownCloud in a subdirectory ====<br />
<br />
By including the default '''owncloud.conf''' in '''httpd.conf''', owncloud will take control of port 80 and your localhost domain. If you would like to have owncloud run in a subdirectory, then skip the 'Include /etc/httpd/conf/extra/owncloud.conf' line altogether and just use a symbolic link like so: <br />
# ln -s /usr/share/webapps/owncloud/ /srv/http/<br />
<br />
In that case, you'll also have to ensure /usr/share/webapps is in the open_basedir line of php.ini, and that per-directory .htaccess files are read by apache. <br />
<br />
Alternatively, you could follow the standard procedure, but comment out the VirtualHost part of the include file, and skip the symlink/basedir/htaccess part.<br />
<br />
=== Filling ownCloud with data ===<br />
<br />
==== Small files ====<br />
<br />
===== WebDav =====<br />
<br />
Always use [[WebDAV]] or the web interface to add new files to your ownCloud. Otherwise they will not show up correctly, as they do not get indexed right.<br />
No further configuration is necessary to enable [[WebDAV]] uploads in ownCloud. <br />
<br />
Consider installing and enabling [[php-apc]] to speed up WebDAV.<br />
<br />
===== SABnzbd =====<br />
<br />
When using [[SABnzbd]], you might want to set<br />
folder_rename 0<br />
in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.<br />
<br />
==== Big files ====<br />
<br />
WebDAV isn't suitable for big files, because it fills up all the RAM and CPU.<br />
<br />
With the current version, it looks like, there is no good way of copying huge amounts of data to your ownCloud.<br />
<br />
Here's a Workaround:<br />
<br />
Copy the files directly to your ownCloud and do a full re-scan of your database (you could use the [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] add-on for example).<br />
<br />
But beware that this will not work as easily in the future, when end-to-end encryption gets added to ownCloud (this is a planned feature).<br />
<br />
=== Important notes ===<br />
<br />
* When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the owncloud client or webdav might fail.<br />
<br />
* If you are planning on using OwnCloud's [http://owncloud.org/sync-clients/ sync-clients], make sure to have [[NTP]] installed and running on your OwnCloud server, otherwise the sync-clients will fail.<br />
<br />
* Add some [[LAMP#SSL|SSL encryption]] to your connection!<br />
(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )<br />
<br />
* More Apps for ownCloud can be found [http://apps.owncloud.com/ here]<br />
<br />
* To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.<br />
Afterwards restart httpd:<br />
<br />
systemctl restart httpd<br />
<br />
log into your server go to the app sections you should see the new apps in there,<br />
<br />
* If you are protecting access to your owncloud location with HTTP basic auth, the file "status.php" must be excluded from auth and be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
== Nginx + uwsgi_php configuration ==<br />
<br />
You can avoid the use of Apache, and run owncloud in it's own process by using the {{pkg|uwsgi-plugin-php}} application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.<br />
*First of all you should set up your Nginx server. See the [[Nginx]] page for further information.<br />
*Set a server with the following lines in the http section of your {{ic|/etc/nginx/nginx.conf}} file:<br />
{{bc|<nowiki><br />
#this is to avoid Request Entity Too Large error<br />
client_max_body_size 1000M;<br />
# deny access to some special files<br />
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {<br />
deny all;<br />
}<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
uwsgi_pass 127.0.0.1:3001;<br />
}<br />
# everything else goes to the filesystem,<br />
# but / will be mapped to index.php and run through uwsgi<br />
location / {<br />
root /usr/share/webapps/owncloud;<br />
index index.php;<br />
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;<br />
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;<br />
}<br />
</nowiki>}}<br />
*Then create a [[Uwsgi|uWSGI]] config file. {{ic|/etc/uwsgi/owncloud.ini}} could be a good choice:<br />
{{bc|<nowiki><br />
[uwsgi]<br />
socket = 127.0.0.1:3001<br />
master = true<br />
chdir = /srv/http/owncloud # This path might be changed<br />
php-docroot = /usr/share/webapps/owncloud<br />
php-index = index.php<br />
<br />
# only allow these php files, I don't want to inadvertently run something else<br />
php-allowed-ext = /index.php<br />
php-allowed-ext = /public.php<br />
php-allowed-ext = /remote.php<br />
php-allowed-ext = /cron.php<br />
#php-allowed-ext = /status.php<br />
php-allowed-ext = /settings/apps.php<br />
php-allowed-ext = /core/ajax/update.php<br />
php-allowed-ext = /core/ajax/share.php<br />
php-allowed-ext = /core/ajax/requesttoken.php<br />
php-allowed-ext = /core/ajax/translations.php<br />
php-allowed-ext = /search/ajax/search.php<br />
php-allowed-ext = /search/templates/part.results.php<br />
php-allowed-ext = /settings/admin.php<br />
php-allowed-ext = /settings/users.php<br />
php-allowed-ext = /settings/personal.php<br />
php-allowed-ext = /settings/help.php<br />
php-allowed-ext = /settings/ajax/getlog.php<br />
php-allowed-ext = /settings/ajax/setlanguage.php<br />
php-allowed-ext = /settings/ajax/setquota.php<br />
php-allowed-ext = /settings/ajax/userlist.php<br />
php-allowed-ext = /settings/ajax/createuser.php<br />
php-allowed-ext = /settings/ajax/removeuser.php<br />
php-allowed-ext = /settings/ajax/enableapp.php<br />
php-allowed-ext = /core/ajax/appconfig.php<br />
<br />
php-set = date.timezone=Etc/UTC<br />
php-set = open_basedir=/srv/http/owncloud:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud<br />
<br />
processes = 10<br />
cheaper = 2<br />
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null<br />
<br />
</nowiki>}}<br />
*You can run it with:<br />
# uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
*Otherwise, a simple systemd unit file to start the uwsgi instance can be (this is without using the emperor):<br />
{{bc|<nowiki><br />
[Unit]<br />
Description=OwnCloud service via uWSGI-PHP<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
ExecReload=/bin/kill -HUP $MAINPID<br />
KillSignal=SIGQUIT<br />
Restart=always<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Sync Clients ==<br />
<br />
The official clients can be found in this page : [http://owncloud.org/install/ Sync Clients]<br />
Also take notice that while the official ownCloud android app is a paid app on the play store, it is not a paid app on [https://f-droid.org/ F-Droid].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
OwnCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if [[WebDAV]] is enabled. If you use a SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]] and access ownClouds admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:<br />
<br />
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.<br />
<br />
$ cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
$ update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
<br />
Should this not work consider disabling mod_curl in /etc/php/php.ini.<br />
<br />
=== Can't create data directory (/path/to/dir) ===<br />
<br />
Check your httpd conf file (like owncloud.conf). Add your data dir to <br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
You should also modify php.ini in the same way. Restart the httpd service to activate the change.<br />
<br />
=== CSync faild to find a specific file. ===<br />
<br />
Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again.<br />
<br />
openssl genrsa -out server.key 2048<br />
openssl req -new -key server.key -x509 -days 365 -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed, to fix that you can either use phpMyAdmin by editing the oc_appconfig table(in the case you got lucky and the table has edit option) or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes'<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic auth, make sure to exclude "status.php", which must be publicly accessible [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== "Can't write into apps directory" ===<br />
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual] either you need an apps directory that is writable by the http user, or you need to set "appstoreenabled" to false. <br />
<br />
''Also'', not mentioned there, the directory needs to be in the open_basedir line in {{ic|/etc/php/php.ini}}<br />
<br />
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}} which is owned by http. Then you can set "appstoreenabled" to true and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
<pre><br />
'apps_paths' => <br />
array (<br />
0 => <br />
array (<br />
'path' => '/usr/share/webapps/owncloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => <br />
array (<br />
'path' => '/var/www/owncloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
</pre><br />
Example open_basedir line from {{ic|/etc/php/php.ini}} (you might have other dirs in there as well):<br />
<pre><br />
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/<br />
</pre><br />
<br />
Directory permissions:<br />
<pre><br />
$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/<br />
drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps<br />
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/<br />
</pre><br />
<br />
== See also ==<br />
* [http://owncloud.org/ ownCloud official website]<br />
* [http://doc.owncloud.org/server/6.0/admin_manual/ ownCloud 6.0 Admin Documentation]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=311680Nextcloud2014-04-24T14:14:50Z<p>Ilfugiuliopascal: Add Related articles</p>
<hr />
<div>[[Category:Web Server]]<br />
[[fr:Owncloud]]<br />
[[ja:Owncloud]]<br />
<br />
{{Related articles start}}<br />
{{Related|LAMP}}<br />
{{Related|Nginx}}<br />
{{Related|Raspberry_Pi}}<br />
{{Related|OpenSSL}}<br />
{{Related articles end}}<br />
<br />
From [[Wikipedia:ownCloud|Wikipedia]]:<br />
: ''ownCloud is a software suite that provides a location-independent storage area for data (cloud storage).''<br />
The ownCloud installation and configuration mainly depends on what web server and database you decide to run. Currently the wiki discusses the [[Owncloud#Apache_configuration|Apache]] and [[Owncloud#Nginx_.2B_uwsgi_php_configuration|Nginx]] configurations.<br />
== First steps ==<br />
<br />
[[pacman|Install]] {{Pkg|owncloud}} from the [[official repositories]]. Alternatively see the packages available in the [[Arch User Repository]]: [https://aur.archlinux.org/packages.php?K=owncloud&O=0].<br />
Uncomment extensions in {{ic|/etc/php/php.ini}}:<br />
gd.so<br />
intl.so<br />
openssl.so<br />
xmlrpc.so<br />
zip.so<br />
iconv.so<br />
<br />
==== Database support ====<br />
Depending on which database backend you are going to use uncomment either one of the following extensions in {{ic|/etc/php/php.ini}}:<br />
{| class="wikitable"<br />
!SQLite!!MySQL!!PostgreSQL<br />
|-<br />
|<br />
sqlite.so<br />
sqlite3.so<br />
pdo_sqlite.so<br />
|<br />
mysql.so<br />
mysqli.so<br />
pdo_mysql.so<br />
|<br />
pgsql.so<br />
pdo_pgsql.so<br />
|-<br />
|}<br />
Don't forget to install the appropriate php-module for the database. In the PostgreSQL case thats {{Pkg|php-pgsql}} or for SQLite {{Pkg|php-sqlite}}.<br />
<br />
==== Exif support ====<br />
Additionally install exif support with<br />
# pacman -S exiv2<br />
and uncomment the exif.so extension in php.ini<br />
<br />
== Docker ==<br />
<br />
A quick and safe alternative to installing and configuring ownCloud on your own is to use a [[Docker]] linux container. You can find several images of fully working LAMP stack with pre-installed ownCloud in the [https://index.docker.io/search?q=ownCloud Docker repositories]. Docker containers are generally safer then a chroot environment and the overhead is very low, ownCloud in docker works smoothly even on quite old machines. The whole setup including installing Docker and ownCloud image is considerably easier and quicker than a native installation.<br />
<br />
== Apache configuration ==<br />
<br />
=== Installation ===<br />
<br />
Set up the [[LAMP]] stack. <br />
<br />
You will probably need to install the MDB2 pear package as well. Install {{pkg|php-pear}}, then:<br />
# pear install MDB2<br />
<br />
# Copy {{ic|/etc/webapps/owncloud/apache.example.conf}} to {{ic|/etc/httpd/conf/extra/owncloud.conf}} (version 6+)<br />
# Add the following lines into {{ic|/etc/httpd/conf/httpd.conf}} (the php5 line should have already been added during the LAMP stack setup):<br />
Include /etc/httpd/conf/extra/owncloud.conf<br />
LoadModule php5_module modules/libphp5.so<br />
Include conf/extra/php5_module.conf<br />
<br />
Since apache 2.4 you might need to adjust owncloud.conf and replace<br />
Order allow,deny<br />
Allow from all<br />
with <br />
Require all granted<br />
<br />
==== Disable Webdav ====<br />
Owncloud comes with its own Webdav enabled which conflict. Owncloud [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 recommends] to disable mod_dav and mod_dav_fs. This should be done in {{ic|/etc/httpd/conf/httpd.conf}}<br />
<br />
Now [[Daemons#Restarting|restart]] httpd (Apache)<br />
# systemctl restart httpd<br />
Open [http://localhost http://localhost] in your browser. You should now be able to create a user account and follow the installation wizard.<br />
<br />
=== Custom configurations ===<br />
<br />
==== Filesize limitations ====<br />
<br />
With the default configuration ownCloud only allows the upload of filesizes less than 2MB.<br />
This can be changed by changing the following line in {{ic|/etc/php/php.ini}} to your liking.<br />
<br />
{{Warning|As of version 4.0 this is no longer necessary! The maximum upload size is now set via the ownCloud gui}}<br />
upload_max_filesize = 2M<br />
<br />
As of version 4.5, upload limits are set in {{ic|/usr/share/webapps/owncloud/.htaccess}}. This won't work if [[LAMP#Using_php5_with_apache2-mpm-worker_and_mod_fcgid|PHP is set up to run as CGI]], so you need to change the limits in {{ic|/etc/php/php.ini}}. You also need to change open_basedir.<br />
{{bc|<nowiki><br />
upload_max_filesize = 512M<br />
post_max_size = 512M<br />
memory_limit = 512M<br />
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/<br />
</nowiki>}}<br />
<br />
==== Running ownCloud in a subdirectory ====<br />
<br />
By including the default '''owncloud.conf''' in '''httpd.conf''', owncloud will take control of port 80 and your localhost domain. If you would like to have owncloud run in a subdirectory, then skip the 'Include /etc/httpd/conf/extra/owncloud.conf' line altogether and just use a symbolic link like so: <br />
# ln -s /usr/share/webapps/owncloud/ /srv/http/<br />
<br />
In that case, you'll also have to ensure /usr/share/webapps is in the open_basedir line of php.ini, and that per-directory .htaccess files are read by apache. <br />
<br />
Alternatively, you could follow the standard procedure, but comment out the VirtualHost part of the include file, and skip the symlink/basedir/htaccess part.<br />
<br />
=== Filling ownCloud with data ===<br />
<br />
==== Small files ====<br />
<br />
===== WebDav =====<br />
<br />
Always use [[WebDAV]] or the web interface to add new files to your ownCloud. Otherwise they will not show up correctly, as they do not get indexed right.<br />
No further configuration is necessary to enable [[WebDAV]] uploads in ownCloud. <br />
<br />
Consider installing and enabling [[php-apc]] to speed up WebDAV.<br />
<br />
===== SABnzbd =====<br />
<br />
When using [[SABnzbd]], you might want to set<br />
folder_rename 0<br />
in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.<br />
<br />
==== Big files ====<br />
<br />
WebDAV isn't suitable for big files, because it fills up all the RAM and CPU.<br />
<br />
With the current version, it looks like, there is no good way of copying huge amounts of data to your ownCloud.<br />
<br />
Here's a Workaround:<br />
<br />
Copy the files directly to your ownCloud and do a full re-scan of your database (you could use the [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] add-on for example).<br />
<br />
But beware that this will not work as easily in the future, when end-to-end encryption gets added to ownCloud (this is a planned feature).<br />
<br />
=== Important notes ===<br />
<br />
* When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the owncloud client or webdav might fail.<br />
<br />
* If you are planning on using OwnCloud's [http://owncloud.org/sync-clients/ sync-clients], make sure to have [[NTP]] installed and running on your OwnCloud server, otherwise the sync-clients will fail.<br />
<br />
* Add some [[LAMP#SSL|SSL encryption]] to your connection!<br />
(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )<br />
<br />
* More Apps for ownCloud can be found [http://apps.owncloud.com/ here]<br />
<br />
* To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.<br />
Afterwards restart httpd:<br />
<br />
systemctl restart httpd<br />
<br />
log into your server go to the app sections you should see the new apps in there,<br />
<br />
* If you are protecting access to your owncloud location with HTTP basic auth, the file "status.php" must be excluded from auth and be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
== Nginx + uwsgi_php configuration ==<br />
<br />
You can avoid the use of Apache, and run owncloud in it's own process by using the {{pkg|uwsgi-plugin-php}} application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.<br />
*First of all you should set up your Nginx server. See the [[Nginx]] page for further information.<br />
*Set a server with the following lines in the http section of your {{ic|/etc/nginx/nginx.conf}} file:<br />
{{bc|<nowiki><br />
#this is to avoid Request Entity Too Large error<br />
client_max_body_size 1000M;<br />
# deny access to some special files<br />
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {<br />
deny all;<br />
}<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
uwsgi_pass 127.0.0.1:3001;<br />
}<br />
# everything else goes to the filesystem,<br />
# but / will be mapped to index.php and run through uwsgi<br />
location / {<br />
root /usr/share/webapps/owncloud;<br />
index index.php;<br />
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;<br />
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;<br />
}<br />
</nowiki>}}<br />
*Then create a [[Uwsgi|uWSGI]] config file. {{ic|/etc/uwsgi/owncloud.ini}} could be a good choice:<br />
{{bc|<nowiki><br />
[uwsgi]<br />
socket = 127.0.0.1:3001<br />
master = true<br />
chdir = /srv/http/owncloud # This path might be changed<br />
php-docroot = /usr/share/webapps/owncloud<br />
php-index = index.php<br />
<br />
# only allow these php files, I don't want to inadvertently run something else<br />
php-allowed-ext = /index.php<br />
php-allowed-ext = /public.php<br />
php-allowed-ext = /remote.php<br />
php-allowed-ext = /cron.php<br />
#php-allowed-ext = /status.php<br />
php-allowed-ext = /settings/apps.php<br />
php-allowed-ext = /core/ajax/update.php<br />
php-allowed-ext = /core/ajax/share.php<br />
php-allowed-ext = /core/ajax/requesttoken.php<br />
php-allowed-ext = /core/ajax/translations.php<br />
php-allowed-ext = /search/ajax/search.php<br />
php-allowed-ext = /search/templates/part.results.php<br />
php-allowed-ext = /settings/admin.php<br />
php-allowed-ext = /settings/users.php<br />
php-allowed-ext = /settings/personal.php<br />
php-allowed-ext = /settings/help.php<br />
php-allowed-ext = /settings/ajax/getlog.php<br />
php-allowed-ext = /settings/ajax/setlanguage.php<br />
php-allowed-ext = /settings/ajax/setquota.php<br />
php-allowed-ext = /settings/ajax/userlist.php<br />
php-allowed-ext = /settings/ajax/createuser.php<br />
php-allowed-ext = /settings/ajax/removeuser.php<br />
php-allowed-ext = /settings/ajax/enableapp.php<br />
php-allowed-ext = /core/ajax/appconfig.php<br />
<br />
php-set = date.timezone=Etc/UTC<br />
php-set = open_basedir=/srv/http/owncloud:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud<br />
<br />
processes = 10<br />
cheaper = 2<br />
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null<br />
<br />
</nowiki>}}<br />
*You can run it with:<br />
# uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
*Otherwise, a simple systemd unit file to start the uwsgi instance can be (this is without using the emperor):<br />
{{bc|<nowiki><br />
[Unit]<br />
Description=OwnCloud service via uWSGI-PHP<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
ExecReload=/bin/kill -HUP $MAINPID<br />
KillSignal=SIGQUIT<br />
Restart=always<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Sync Clients ==<br />
<br />
The official clients can be found in this page : [http://owncloud.org/install/ Sync Clients]<br />
Also take notice that while the official ownCloud android app is a paid app on the play store, it is not a paid app on [https://f-droid.org/ F-Droid].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
OwnCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if [[WebDAV]] is enabled. If you use a SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]] and access ownClouds admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:<br />
<br />
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.<br />
<br />
$ cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
$ update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
<br />
Should this not work consider disabling mod_curl in /etc/php/php.ini.<br />
<br />
=== Can't create data directory (/path/to/dir) ===<br />
<br />
Check your httpd conf file (like owncloud.conf). Add your data dir to <br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
You should also modify php.ini in the same way. Restart the httpd service to activate the change.<br />
<br />
=== CSync faild to find a specific file. ===<br />
<br />
Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again.<br />
<br />
openssl genrsa -out server.key 2048<br />
openssl req -new -key server.key -x509 -days 365 -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed, to fix that you can either use phpMyAdmin by editing the oc_appconfig table(in the case you got lucky and the table has edit option) or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes'<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic auth, make sure to exclude "status.php", which must be publicly accessible [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== "Can't write into apps directory" ===<br />
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual] either you need an apps directory that is writable by the http user, or you need to set "appstoreenabled" to false. <br />
<br />
''Also'', not mentioned there, the directory needs to be in the open_basedir line in {{ic|/etc/php/php.ini}}<br />
<br />
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}} which is owned by http. Then you can set "appstoreenabled" to true and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
<pre><br />
'apps_paths' => <br />
array (<br />
0 => <br />
array (<br />
'path' => '/usr/share/webapps/owncloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => <br />
array (<br />
'path' => '/var/www/owncloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
</pre><br />
Example open_basedir line from {{ic|/etc/php/php.ini}} (you might have other dirs in there as well):<br />
<pre><br />
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/<br />
</pre><br />
<br />
Directory permissions:<br />
<pre><br />
$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/<br />
drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps<br />
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/<br />
</pre><br />
<br />
== See also ==<br />
* [http://owncloud.org/ ownCloud official website]<br />
* [http://doc.owncloud.org/server/6.0/admin_manual/ ownCloud 6.0 Admin Documentation]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Browser_plugins&diff=311661Browser plugins2014-04-24T12:42:06Z<p>Ilfugiuliopascal: Add related articles</p>
<hr />
<div>[[de:Browser Plugins]]<br />
[[es:Browser Plugins]]<br />
[[fr:Plugins navigateur]]<br />
[[ja:Browser Plugins]]<br />
[[tr:Web tarayıcı eklentileri]]<br />
[[zh-CN:Browser Plugins]]<br />
[[Category:Web Browser]]<br />
<br />
{{Related articles start}}<br />
{{Related|Opera}}<br />
{{Related|Firefox}}<br />
{{Related|Chromium}}<br />
{{Related articles end}}<br />
<br />
These plugins work in [[Firefox]], [[Opera]] and WebKit derivatives.<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 />
{{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 />
{{Warning| package {{Pkg|gnash-gtk}} is no longer available in the [[official repositories]].}}<br />
<br />
It is possible to install {{AUR|gnash-trunk-git}} from the [[Arch User Repository]].<br />
<br />
{{Note|If you find that Gnash doesn't 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 />
[[pacman|Install]] {{Pkg|flashplugin}} from the official repositories.<br />
{{Note|<br />
* Adobe Flash Player for Linux using the NPAPI was [http://blogs.adobe.com/flashplayer/2012/02/adobe-and-google-partnering-for-flash-player-on-linux.html discontinued by Adobe], although security updates for version 11.2 will be provided for another 5 years by Adobe (i.e. 2017). Adobe will, however, release new versions of PPAPI version of the plugin, shipped with Google Chrome. See [[Chromium#Adobe Flash Player (Pepper plugin API)]] for more information.<br />
* Some Flash apps may require {{AUR|ttf-ms-fonts}} from the [[AUR]] in order to properly render text.<br />
}}<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 />
To enable [[VDPAU]] hardware decoding, uncomment the following line: (note that this can be unstable and lead to crashes)<br />
EnableLinuxHWVideoDecode=1<br />
<br />
An more detailed example configuration:<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 />
For a way to disable this message see [http://ubuntuforums.org/showthread.php?t=1839293 this ubuntuforums.org post].<br />
<br />
Backup {{ic|libflashplayer.so}}:<br />
# cp /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so.backup <br />
<br />
Make a copy of it in your home directory:<br />
# cp /usr/lib/mozilla/plugins/libflashplayer.so ~/<br />
<br />
Install {{Pkg|wine}} from the official repositories.<br />
<br />
Download {{ic|Flash Fullscreen Patcher.zip}} from [http://forum.videohelp.com/threads/304807-How-to-remove-annoying-Press-Esc-to-message-in-Flash-Video this page], extract and execute with {{ic|wine}}:<br />
<br />
$ wget http://forum.videohelp.com/attachments/16250-1360745667/Flash%20Fullscreen%20Patcher.zip<br />
$ unzip Flash\ Fullscreen\ Patcher\ 2.0.zip<br />
$ wine Flash\ Fullscreen\ Patcher\ 2.0.exe<br />
<br />
Patch {{ic|libflashplayer.so}} (the one from your home directory) using the GUI.<br />
Copy the patched Flash Player back to the plugins directory:<br />
# cp ~/libflashplayer.so /usr/lib/mozilla/plugins/<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's 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 (usually in gnome-session-properties). <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 />
== 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 isn't 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 />
<br />
Due to licensing restrictions, Adobe Reader cannot be distributed from any of the official Arch Linux repositories. There are versions available in the [[AUR]]. Please note that no matter how many votes it receives, Adobe Reader will never be included in the [[official repositories]].<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 />
==== 32-bit ====<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]].<br />
<br />
This package installs the Acrobat Reader application as well as the Firefox plugin. Note that hardware-assisted rendering is unavailable under Linux (at least using a Geforce 8600GTS with driver version 185.18.14).<br />
<br />
==== 64-bit ====<br />
<br />
There is yet to be an official 64-bit version of Adobe Reader.<br />
<br />
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 the main article: [[Citrix]].<br />
<br />
== Java (IcedTea) ==<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:<br />
* {{Pkg|icedtea-web-java7}} for version 7 of the Java environment.<br />
<br />
If you want to use Oracle's JRE, install the {{AUR|jre}} (or {{AUR|jre6}}) 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 />
== Video 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 />
=== MozPlugger ===<br />
<br />
MozPlugger can be installed with the {{AUR|mozplugger}} package, respectively {{AUR|mozplugger-chromium}}, available in the [[AUR]].<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 />
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 [[cpufrequtils#Changing the ondemand governor's threshold|Cpufrequtils]]<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>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Browser_plugins&diff=311655Browser plugins2014-04-24T12:34:40Z<p>Ilfugiuliopascal: /* Gnash */ gnash-gtk is no longer available in the official repositories</p>
<hr />
<div>[[de:Browser Plugins]]<br />
[[es:Browser Plugins]]<br />
[[fr:Plugins navigateur]]<br />
[[ja:Browser Plugins]]<br />
[[tr:Web tarayıcı eklentileri]]<br />
[[zh-CN:Browser Plugins]]<br />
[[Category:Web Browser]]<br />
These plugins work in [[Firefox]], [[Opera]] and WebKit derivatives.<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 />
{{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 />
{{Warning| package {{Pkg|gnash-gtk}} is no longer available in the [[official repositories]].}}<br />
<br />
It is possible to install {{AUR|gnash-trunk-git}} from the [[Arch User Repository]].<br />
<br />
{{Note|If you find that Gnash doesn't 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 />
[[pacman|Install]] {{Pkg|flashplugin}} from the official repositories.<br />
{{Note|<br />
* Adobe Flash Player for Linux using the NPAPI was [http://blogs.adobe.com/flashplayer/2012/02/adobe-and-google-partnering-for-flash-player-on-linux.html discontinued by Adobe], although security updates for version 11.2 will be provided for another 5 years by Adobe (i.e. 2017). Adobe will, however, release new versions of PPAPI version of the plugin, shipped with Google Chrome. See [[Chromium#Adobe Flash Player (Pepper plugin API)]] for more information.<br />
* Some Flash apps may require {{AUR|ttf-ms-fonts}} from the [[AUR]] in order to properly render text.<br />
}}<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 />
To enable [[VDPAU]] hardware decoding, uncomment the following line: (note that this can be unstable and lead to crashes)<br />
EnableLinuxHWVideoDecode=1<br />
<br />
An more detailed example configuration:<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 />
For a way to disable this message see [http://ubuntuforums.org/showthread.php?t=1839293 this ubuntuforums.org post].<br />
<br />
Backup {{ic|libflashplayer.so}}:<br />
# cp /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so.backup <br />
<br />
Make a copy of it in your home directory:<br />
# cp /usr/lib/mozilla/plugins/libflashplayer.so ~/<br />
<br />
Install {{Pkg|wine}} from the official repositories.<br />
<br />
Download {{ic|Flash Fullscreen Patcher.zip}} from [http://forum.videohelp.com/threads/304807-How-to-remove-annoying-Press-Esc-to-message-in-Flash-Video this page], extract and execute with {{ic|wine}}:<br />
<br />
$ wget http://forum.videohelp.com/attachments/16250-1360745667/Flash%20Fullscreen%20Patcher.zip<br />
$ unzip Flash\ Fullscreen\ Patcher\ 2.0.zip<br />
$ wine Flash\ Fullscreen\ Patcher\ 2.0.exe<br />
<br />
Patch {{ic|libflashplayer.so}} (the one from your home directory) using the GUI.<br />
Copy the patched Flash Player back to the plugins directory:<br />
# cp ~/libflashplayer.so /usr/lib/mozilla/plugins/<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's 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 (usually in gnome-session-properties). <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 />
== 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 isn't 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 />
<br />
Due to licensing restrictions, Adobe Reader cannot be distributed from any of the official Arch Linux repositories. There are versions available in the [[AUR]]. Please note that no matter how many votes it receives, Adobe Reader will never be included in the [[official repositories]].<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 />
==== 32-bit ====<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]].<br />
<br />
This package installs the Acrobat Reader application as well as the Firefox plugin. Note that hardware-assisted rendering is unavailable under Linux (at least using a Geforce 8600GTS with driver version 185.18.14).<br />
<br />
==== 64-bit ====<br />
<br />
There is yet to be an official 64-bit version of Adobe Reader.<br />
<br />
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 the main article: [[Citrix]].<br />
<br />
== Java (IcedTea) ==<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:<br />
* {{Pkg|icedtea-web-java7}} for version 7 of the Java environment.<br />
<br />
If you want to use Oracle's JRE, install the {{AUR|jre}} (or {{AUR|jre6}}) 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 />
== Video 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 />
=== MozPlugger ===<br />
<br />
MozPlugger can be installed with the {{AUR|mozplugger}} package, respectively {{AUR|mozplugger-chromium}}, available in the [[AUR]].<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 />
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 [[cpufrequtils#Changing the ondemand governor's threshold|Cpufrequtils]]<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>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=302477Nextcloud2014-02-28T17:59:15Z<p>Ilfugiuliopascal: /* Sync Clients */</p>
<hr />
<div>[[Category:Web Server]]<br />
[[fr:Owncloud]]<br />
[[ja:Owncloud]]<br />
From [[Wikipedia:ownCloud|Wikipedia]]:<br />
: ''ownCloud is a software suite that provides a location-independent storage area for data (cloud storage).''<br />
The ownCloud installation and configuration mainly depends on what web server and database you decide to run. Currently the wiki discusses the [[Owncloud#Apache_configuration|Apache]] and [[Owncloud#Nginx_.2B_uwsgi_php_configuration|Nginx]] configurations.<br />
== First steps ==<br />
<br />
[[pacman|Install]] {{Pkg|owncloud}} from the [[official repositories]]. Alternatively see the packages available in the [[Arch User Repository]]: [https://aur.archlinux.org/packages.php?K=owncloud&O=0].<br />
Uncomment extensions in {{ic|/etc/php/php.ini}}:<br />
gd.so<br />
intl.so<br />
openssl.so<br />
xmlrpc.so<br />
zip.so<br />
iconv.so<br />
<br />
==== Database support ====<br />
Depending on which database backend you are going to use uncomment either one of the following extensions in {{ic|/etc/php/php.ini}}:<br />
{|border=1 class="wikitable"<br />
!SQLite!!MySQL!!PostgreSQL<br />
|-<br />
|<br />
sqlite.so<br />
sqlite3.so<br />
pdo_sqlite.so<br />
|<br />
mysql.so<br />
mysqli.so<br />
pdo_mysql.so<br />
|<br />
pgsql.so<br />
pdo_pgsql.so<br />
|-<br />
|}<br />
Don't forget to install the appropriate php-module for the database. In the PostgreSQL case thats {{Pkg|php-pgsql}} or for SQLite {{Pkg|php-sqlite}}.<br />
<br />
==== Exif support ====<br />
Additionally install exif support with<br />
# pacman -S exiv2<br />
and uncomment the exif.so extension in php.ini<br />
<br />
== Apache configuration ==<br />
<br />
=== Installation ===<br />
<br />
Set up the [[LAMP]] stack. <br />
<br />
You will probably need to install the MDB2 pear package as well. Install {{pkg|php-pear}}, then:<br />
# pear install MDB2<br />
<br />
# Copy {{ic|/etc/webapps/owncloud/apache.example.conf}} to {{ic|/etc/httpd/conf/extra/owncloud.conf}} (version 6+)<br />
# Add the following lines into {{ic|/etc/httpd/conf/httpd.conf}} (the php5 line should have already been added during the LAMP stack setup):<br />
Include /etc/httpd/conf/extra/owncloud.conf<br />
LoadModule php5_module modules/libphp5.so<br />
Include conf/extra/php5_module.conf<br />
<br />
==== Disable Webdav ====<br />
Owncloud comes with its own Webdav enabled which conflict. Owncloud [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 recommends] to disable mod_dav and mod_dav_fs. This should be done in {{ic|/etc/httpd/conf/httpd.conf}}<br />
<br />
Now [[Daemons#Restarting|restart]] httpd (Apache)<br />
# systemctl restart httpd<br />
Open [http://localhost http://localhost] in your browser. You should now be able to create a user account and follow the installation wizard.<br />
<br />
=== Custom configurations ===<br />
<br />
==== Filesize limitations ====<br />
<br />
With the default configuration ownCloud only allows the upload of filesizes less than 2MB.<br />
This can be changed by changing the following line in {{ic|/etc/php/php.ini}} to your liking.<br />
<br />
{{Warning|As of version 4.0 this is no longer necessary! The maximum upload size is now set via the ownCloud gui}}<br />
upload_max_filesize = 2M<br />
<br />
As of version 4.5, upload limits are set in {{ic|/usr/share/webapps/owncloud/.htaccess}}. This won't work if [[LAMP#Using_php5_with_apache2-mpm-worker_and_mod_fcgid|PHP is set up to run as CGI]], so you need to change the limits in {{ic|/etc/php/php.ini}}. You also need to change open_basedir.<br />
{{bc|<nowiki><br />
upload_max_filesize = 512M<br />
post_max_size = 512M<br />
memory_limit = 512M<br />
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/<br />
</nowiki>}}<br />
<br />
==== Running ownCloud in a subdirectory ====<br />
<br />
By including the default '''owncloud.conf''' in '''httpd.conf''', owncloud will take control of port 80 and your localhost domain. If you would like to have owncloud run in a subdirectory, then skip the 'Include /etc/httpd/conf/extra/owncloud.conf' line altogether and just use a symbolic link like so: <br />
# ln -s /usr/share/webapps/owncloud/ /srv/http/<br />
<br />
In that case, you'll also have to ensure /usr/share/webapps is in the open_basedir line of php.ini, and that per-directory .htaccess files are read by apache. <br />
<br />
Alternatively, you could follow the standard procedure, but comment out the VirtualHost part of the include file, and skip the symlink/basedir/htaccess part.<br />
<br />
=== Filling ownCloud with data ===<br />
<br />
==== Small files ====<br />
<br />
===== WebDav =====<br />
<br />
Always use [[WebDAV]] or the web interface to add new files to your ownCloud. Otherwise they will not show up correctly, as they do not get indexed right.<br />
No further configuration is necessary to enable [[WebDAV]] uploads in ownCloud. <br />
<br />
Consider installing and enabling [[php-apc]] to speed up WebDAV.<br />
<br />
===== SABnzbd =====<br />
<br />
When using [[SABnzbd]], you might want to set<br />
folder_rename 0<br />
in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.<br />
<br />
==== Big files ====<br />
<br />
WebDAV isn't suitable for big files, because it fills up all the RAM and CPU.<br />
<br />
With the current version, it looks like, there is no good way of copying huge amounts of data to your ownCloud.<br />
<br />
Here's a Workaround:<br />
<br />
Copy the files directly to your ownCloud and do a full re-scan of your database (you could use the [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] add-on for example).<br />
<br />
But beware that this will not work as easily in the future, when end-to-end encryption gets added to ownCloud (this is a planned feature).<br />
<br />
=== Important notes ===<br />
<br />
* When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the owncloud client or webdav might fail.<br />
<br />
* If you are planning on using OwnCloud's [http://owncloud.org/sync-clients/ sync-clients], make sure to have [[NTP]] installed and running on your OwnCloud server, otherwise the sync-clients will fail.<br />
<br />
* Add some [[LAMP#SSL|SSL encryption]] to your connection!<br />
(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )<br />
<br />
* More Apps for ownCloud can be found [http://apps.owncloud.com/ here]<br />
<br />
* To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.<br />
Afterwards restart httpd:<br />
<br />
systemctl restart httpd<br />
<br />
log into your server go to the app sections you should see the new apps in there,<br />
<br />
* If you are protecting access to your owncloud location with HTTP basic auth, the file "status.php" must be excluded from auth and be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
== Nginx + uwsgi_php configuration ==<br />
<br />
You can avoid the use of Apache, and run owncloud in it's own process by using the {{pkg|uwsgi-plugin-php}} application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.<br />
*First of all you should set up your Nginx server. See the [[Nginx]] page for further information.<br />
*Set a server with the following lines in the http section of your {{ic|/etc/nginx/nginx.conf}} file:<br />
{{bc|<nowiki><br />
#this is to avoid Request Entity Too Large error<br />
client_max_body_size 1000M;<br />
# deny access to some special files<br />
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {<br />
deny all;<br />
}<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
uwsgi_pass 127.0.0.1:3001;<br />
}<br />
# everything else goes to the filesystem,<br />
# but / will be mapped to index.php and run through uwsgi<br />
location / {<br />
root /usr/share/webapps/owncloud;<br />
index index.php;<br />
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;<br />
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;<br />
}<br />
</nowiki>}}<br />
*Then create a [[Uwsgi|uWSGI]] config file. {{ic|/etc/uwsgi/owncloud.ini}} could be a good choice:<br />
{{bc|<nowiki><br />
[uwsgi]<br />
socket = 127.0.0.1:3001<br />
master = true<br />
chdir = /srv/http/owncloud # This path might be changed<br />
php-docroot = /usr/share/webapps/owncloud<br />
php-index = index.php<br />
<br />
# only allow these php files, I don't want to inadvertently run something else<br />
php-allowed-ext = /index.php<br />
php-allowed-ext = /public.php<br />
php-allowed-ext = /remote.php<br />
php-allowed-ext = /cron.php<br />
#php-allowed-ext = /status.php<br />
php-allowed-ext = /settings/apps.php<br />
php-allowed-ext = /core/ajax/update.php<br />
php-allowed-ext = /core/ajax/share.php<br />
php-allowed-ext = /core/ajax/requesttoken.php<br />
php-allowed-ext = /core/ajax/translations.php<br />
php-allowed-ext = /search/ajax/search.php<br />
php-allowed-ext = /search/templates/part.results.php<br />
php-allowed-ext = /settings/admin.php<br />
php-allowed-ext = /settings/users.php<br />
php-allowed-ext = /settings/personal.php<br />
php-allowed-ext = /settings/help.php<br />
php-allowed-ext = /settings/ajax/getlog.php<br />
php-allowed-ext = /settings/ajax/setlanguage.php<br />
php-allowed-ext = /settings/ajax/setquota.php<br />
php-allowed-ext = /settings/ajax/userlist.php<br />
php-allowed-ext = /settings/ajax/createuser.php<br />
php-allowed-ext = /settings/ajax/removeuser.php<br />
php-allowed-ext = /settings/ajax/enableapp.php<br />
php-allowed-ext = /core/ajax/appconfig.php<br />
<br />
php-set = date.timezone=Etc/UTC<br />
php-set = open_basedir=/srv/http/owncloud:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud<br />
<br />
processes = 10<br />
cheaper = 2<br />
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null<br />
<br />
</nowiki>}}<br />
*You can run it with:<br />
# uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
*Otherwise, a simple systemd unit file to start the uwsgi instance can be (this is without using the emperor):<br />
{{bc|<nowiki><br />
[Unit]<br />
Description=OwnCloud service via uWSGI-PHP<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
ExecReload=/bin/kill -HUP $MAINPID<br />
KillSignal=SIGQUIT<br />
Restart=always<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Sync Clients ==<br />
<br />
The official clients can be found in this page : [http://owncloud.org/install/ Sync Clients]<br />
Also take notice that while the official ownCloud android app is a paid app on the play store, it is not a paid app on [https://f-droid.org/ F-Droid].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
OwnCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if [[WebDAV]] is enabled. If you use a SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]] and access ownClouds admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:<br />
<br />
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.<br />
<br />
$ cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
$ update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
<br />
Should this not work consider disabling mod_curl in /etc/php/php.ini.<br />
<br />
=== Can't create data directory (/path/to/dir) ===<br />
<br />
Check your httpd conf file (like owncloud.conf). Add your data dir to <br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
You should also modify php.ini in the same way. Restart the httpd service to activate the change.<br />
<br />
=== CSync faild to find a specific file. ===<br />
<br />
Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again.<br />
<br />
openssl genrsa -out server.key 2048<br />
openssl req -new -key server.key -x509 -days 365 -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed, to fix that you can either use phpMyAdmin by editing the oc_appconfig table(in the case you got lucky and the table has edit option) or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes'<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic auth, make sure to exclude "status.php", which must be publicly accessible [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== "Can't write into apps directory" ===<br />
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual] either you need an apps directory that is writable by the http user, or you need to set "appstoreenabled" to false. <br />
<br />
''Also'', not mentioned there, the directory needs to be in the open_basedir line in {{ic|/etc/php/php.ini}}<br />
<br />
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}} which is owned by http. Then you can set "appstoreenabled" to true and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
<pre><br />
'apps_paths' => <br />
array (<br />
0 => <br />
array (<br />
'path' => '/usr/share/webapps/owncloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => <br />
array (<br />
'path' => '/var/www/owncloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
</pre><br />
Example open_basedir line from {{ic|/etc/php/php.ini}} (you might have other dirs in there as well):<br />
<pre><br />
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/<br />
</pre><br />
<br />
Directory permissions:<br />
<pre><br />
$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/<br />
drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps<br />
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/<br />
</pre><br />
<br />
== See also ==<br />
* [http://owncloud.org/ ownCloud official website]<br />
* [http://doc.owncloud.org/server/6.0/admin_manual/ ownCloud 6.0 Admin Documentation]</div>Ilfugiuliopascalhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=302472Nextcloud2014-02-28T17:54:22Z<p>Ilfugiuliopascal: "First steps" section added</p>
<hr />
<div>[[Category:Web Server]]<br />
[[fr:Owncloud]]<br />
[[ja:Owncloud]]<br />
From [[Wikipedia:ownCloud|Wikipedia]]:<br />
: ''ownCloud is a software suite that provides a location-independent storage area for data (cloud storage).''<br />
The ownCloud installation and configuration mainly depends on what web server and database you decide to run. Currently the wiki discusses the [[Owncloud#Apache_configuration|Apache]] and [[Owncloud#Nginx_.2B_uwsgi_php_configuration|Nginx]] configurations.<br />
== First steps ==<br />
<br />
[[pacman|Install]] {{Pkg|owncloud}} from the [[official repositories]]. Alternatively see the packages available in the [[Arch User Repository]]: [https://aur.archlinux.org/packages.php?K=owncloud&O=0].<br />
Uncomment extensions in {{ic|/etc/php/php.ini}}:<br />
gd.so<br />
intl.so<br />
openssl.so<br />
xmlrpc.so<br />
zip.so<br />
iconv.so<br />
<br />
==== Database support ====<br />
Depending on which database backend you are going to use uncomment either one of the following extensions in {{ic|/etc/php/php.ini}}:<br />
{|border=1 class="wikitable"<br />
!SQLite!!MySQL!!PostgreSQL<br />
|-<br />
|<br />
sqlite.so<br />
sqlite3.so<br />
pdo_sqlite.so<br />
|<br />
mysql.so<br />
mysqli.so<br />
pdo_mysql.so<br />
|<br />
pgsql.so<br />
pdo_pgsql.so<br />
|-<br />
|}<br />
Don't forget to install the appropriate php-module for the database. In the PostgreSQL case thats {{Pkg|php-pgsql}} or for SQLite {{Pkg|php-sqlite}}.<br />
<br />
==== Exif support ====<br />
Additionally install exif support with<br />
# pacman -S exiv2<br />
and uncomment the exif.so extension in php.ini<br />
<br />
== Apache configuration ==<br />
<br />
=== Installation ===<br />
<br />
Set up the [[LAMP]] stack. <br />
<br />
You will probably need to install the MDB2 pear package as well. Install {{pkg|php-pear}}, then:<br />
# pear install MDB2<br />
<br />
# Copy {{ic|/etc/webapps/owncloud/apache.example.conf}} to {{ic|/etc/httpd/conf/extra/owncloud.conf}} (version 6+)<br />
# Add the following lines into {{ic|/etc/httpd/conf/httpd.conf}} (the php5 line should have already been added during the LAMP stack setup):<br />
Include /etc/httpd/conf/extra/owncloud.conf<br />
LoadModule php5_module modules/libphp5.so<br />
Include conf/extra/php5_module.conf<br />
<br />
==== Disable Webdav ====<br />
Owncloud comes with its own Webdav enabled which conflict. Owncloud [http://forum.owncloud.org/viewtopic.php?f=17&t=7240 recommends] to disable mod_dav and mod_dav_fs. This should be done in {{ic|/etc/httpd/conf/httpd.conf}}<br />
<br />
Now [[Daemons#Restarting|restart]] httpd (Apache)<br />
# systemctl restart httpd<br />
Open [http://localhost http://localhost] in your browser. You should now be able to create a user account and follow the installation wizard.<br />
<br />
=== Custom configurations ===<br />
<br />
==== Filesize limitations ====<br />
<br />
With the default configuration ownCloud only allows the upload of filesizes less than 2MB.<br />
This can be changed by changing the following line in {{ic|/etc/php/php.ini}} to your liking.<br />
<br />
{{Warning|As of version 4.0 this is no longer necessary! The maximum upload size is now set via the ownCloud gui}}<br />
upload_max_filesize = 2M<br />
<br />
As of version 4.5, upload limits are set in {{ic|/usr/share/webapps/owncloud/.htaccess}}. This won't work if [[LAMP#Using_php5_with_apache2-mpm-worker_and_mod_fcgid|PHP is set up to run as CGI]], so you need to change the limits in {{ic|/etc/php/php.ini}}. You also need to change open_basedir.<br />
{{bc|<nowiki><br />
upload_max_filesize = 512M<br />
post_max_size = 512M<br />
memory_limit = 512M<br />
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/<br />
</nowiki>}}<br />
<br />
==== Running ownCloud in a subdirectory ====<br />
<br />
By including the default '''owncloud.conf''' in '''httpd.conf''', owncloud will take control of port 80 and your localhost domain. If you would like to have owncloud run in a subdirectory, then skip the 'Include /etc/httpd/conf/extra/owncloud.conf' line altogether and just use a symbolic link like so: <br />
# ln -s /usr/share/webapps/owncloud/ /srv/http/<br />
<br />
In that case, you'll also have to ensure /usr/share/webapps is in the open_basedir line of php.ini, and that per-directory .htaccess files are read by apache. <br />
<br />
Alternatively, you could follow the standard procedure, but comment out the VirtualHost part of the include file, and skip the symlink/basedir/htaccess part.<br />
<br />
=== Filling ownCloud with data ===<br />
<br />
==== Small files ====<br />
<br />
===== WebDav =====<br />
<br />
Always use [[WebDAV]] or the web interface to add new files to your ownCloud. Otherwise they will not show up correctly, as they do not get indexed right.<br />
No further configuration is necessary to enable [[WebDAV]] uploads in ownCloud. <br />
<br />
Consider installing and enabling [[php-apc]] to speed up WebDAV.<br />
<br />
===== SABnzbd =====<br />
<br />
When using [[SABnzbd]], you might want to set<br />
folder_rename 0<br />
in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.<br />
<br />
==== Big files ====<br />
<br />
WebDAV isn't suitable for big files, because it fills up all the RAM and CPU.<br />
<br />
With the current version, it looks like, there is no good way of copying huge amounts of data to your ownCloud.<br />
<br />
Here's a Workaround:<br />
<br />
Copy the files directly to your ownCloud and do a full re-scan of your database (you could use the [http://apps.owncloud.com/content/show.php?content=151948&forumpage=0&PHPSESSID=37b915160effcc0f37cc761ad2ab88be Re-scan filesystem] add-on for example).<br />
<br />
But beware that this will not work as easily in the future, when end-to-end encryption gets added to ownCloud (this is a planned feature).<br />
<br />
=== Important notes ===<br />
<br />
* When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the owncloud client or webdav might fail.<br />
<br />
* If you are planning on using OwnCloud's [http://owncloud.org/sync-clients/ sync-clients], make sure to have [[NTP]] installed and running on your OwnCloud server, otherwise the sync-clients will fail.<br />
<br />
* Add some [[LAMP#SSL|SSL encryption]] to your connection!<br />
(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )<br />
<br />
* More Apps for ownCloud can be found [http://apps.owncloud.com/ here]<br />
<br />
* To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.<br />
Afterwards restart httpd:<br />
<br />
systemctl restart httpd<br />
<br />
log into your server go to the app sections you should see the new apps in there,<br />
<br />
* If you are protecting access to your owncloud location with HTTP basic auth, the file "status.php" must be excluded from auth and be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
== Nginx + uwsgi_php configuration ==<br />
<br />
You can avoid the use of Apache, and run owncloud in it's own process by using the {{pkg|uwsgi-plugin-php}} application server. uWSGI itself has a wealth of features to limit the resource use, and to harden the security of the application, and by being a separate process it can run under its own user.<br />
*First of all you should set up your Nginx server. See the [[Nginx]] page for further information.<br />
*Set a server with the following lines in the http section of your {{ic|/etc/nginx/nginx.conf}} file:<br />
{{bc|<nowiki><br />
#this is to avoid Request Entity Too Large error<br />
client_max_body_size 1000M;<br />
# deny access to some special files<br />
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {<br />
deny all;<br />
}<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
uwsgi_pass 127.0.0.1:3001;<br />
}<br />
# everything else goes to the filesystem,<br />
# but / will be mapped to index.php and run through uwsgi<br />
location / {<br />
root /usr/share/webapps/owncloud;<br />
index index.php;<br />
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;<br />
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;<br />
}<br />
</nowiki>}}<br />
*Then create a [[Uwsgi|uWSGI]] config file. {{ic|/etc/uwsgi/owncloud.ini}} could be a good choice:<br />
{{bc|<nowiki><br />
[uwsgi]<br />
socket = 127.0.0.1:3001<br />
master = true<br />
chdir = /srv/http/owncloud # This path might be changed<br />
php-docroot = /usr/share/webapps/owncloud<br />
php-index = index.php<br />
<br />
# only allow these php files, I don't want to inadvertently run something else<br />
php-allowed-ext = /index.php<br />
php-allowed-ext = /public.php<br />
php-allowed-ext = /remote.php<br />
php-allowed-ext = /cron.php<br />
#php-allowed-ext = /status.php<br />
php-allowed-ext = /settings/apps.php<br />
php-allowed-ext = /core/ajax/update.php<br />
php-allowed-ext = /core/ajax/share.php<br />
php-allowed-ext = /core/ajax/requesttoken.php<br />
php-allowed-ext = /core/ajax/translations.php<br />
php-allowed-ext = /search/ajax/search.php<br />
php-allowed-ext = /search/templates/part.results.php<br />
php-allowed-ext = /settings/admin.php<br />
php-allowed-ext = /settings/users.php<br />
php-allowed-ext = /settings/personal.php<br />
php-allowed-ext = /settings/help.php<br />
php-allowed-ext = /settings/ajax/getlog.php<br />
php-allowed-ext = /settings/ajax/setlanguage.php<br />
php-allowed-ext = /settings/ajax/setquota.php<br />
php-allowed-ext = /settings/ajax/userlist.php<br />
php-allowed-ext = /settings/ajax/createuser.php<br />
php-allowed-ext = /settings/ajax/removeuser.php<br />
php-allowed-ext = /settings/ajax/enableapp.php<br />
php-allowed-ext = /core/ajax/appconfig.php<br />
<br />
php-set = date.timezone=Etc/UTC<br />
php-set = open_basedir=/srv/http/owncloud:/tmp/:/usr/share/pear/:/usr/share/webapps/owncloud<br />
<br />
processes = 10<br />
cheaper = 2<br />
cron = -3 -1 -1 -1 -1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null<br />
<br />
</nowiki>}}<br />
*You can run it with:<br />
# uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
*Otherwise, a simple systemd unit file to start the uwsgi instance can be (this is without using the emperor):<br />
{{bc|<nowiki><br />
[Unit]<br />
Description=OwnCloud service via uWSGI-PHP<br />
<br />
[Service]<br />
User=http<br />
ExecStart=/usr/bin/uwsgi_php --ini /etc/uwsgi/owncloud.ini<br />
ExecReload=/bin/kill -HUP $MAINPID<br />
KillSignal=SIGQUIT<br />
Restart=always<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
== Sync Clients ==<br />
<br />
The offical clients can be found in this page : [http://owncloud.org/install/ Sync Clients]<br />
Also take notice that while the offical owncloud android app is a paid app on the play store, it is not a paid app on [https://f-droid.org/ F-Droid].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
OwnCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if [[WebDAV]] is enabled. If you use a SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]] and access ownClouds admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]]-tutorial, execute the following steps:<br />
<br />
Create local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{Ic|ca-certificates}}-updates to overwrite it.<br />
<br />
$ cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
$ update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
<br />
Should this not work consider disabling mod_curl in /etc/php/php.ini.<br />
<br />
=== Can't create data directory (/path/to/dir) ===<br />
<br />
Check your httpd conf file (like owncloud.conf). Add your data dir to <br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
You should also modify php.ini in the same way. Restart the httpd service to activate the change.<br />
<br />
=== CSync faild to find a specific file. ===<br />
<br />
Most probably a certificate issue, recreate it, and don't leave the common name empty or you will see the error again.<br />
<br />
openssl genrsa -out server.key 2048<br />
openssl req -new -key server.key -x509 -days 365 -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed, to fix that you can either use phpMyAdmin by editing the oc_appconfig table(in the case you got lucky and the table has edit option) or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes'<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic auth, make sure to exclude "status.php", which must be publicly accessible [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== "Can't write into apps directory" ===<br />
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual] either you need an apps directory that is writable by the http user, or you need to set "appstoreenabled" to false. <br />
<br />
''Also'', not mentioned there, the directory needs to be in the open_basedir line in {{ic|/etc/php/php.ini}}<br />
<br />
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}} which is owned by http. Then you can set "appstoreenabled" to true and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
<pre><br />
'apps_paths' => <br />
array (<br />
0 => <br />
array (<br />
'path' => '/usr/share/webapps/owncloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => <br />
array (<br />
'path' => '/var/www/owncloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
</pre><br />
Example open_basedir line from {{ic|/etc/php/php.ini}} (you might have other dirs in there as well):<br />
<pre><br />
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/<br />
</pre><br />
<br />
Directory permissions:<br />
<pre><br />
$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/<br />
drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps<br />
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/<br />
</pre><br />
<br />
== See also ==<br />
* [http://owncloud.org/ ownCloud official website]<br />
* [http://doc.owncloud.org/server/6.0/admin_manual/ ownCloud 6.0 Admin Documentation]</div>Ilfugiuliopascal