Closed rwijtvliet closed 10 years ago
Yes, the docs might not match up.
I'll check for sure tomorrow.
peter
On 03/16/2014 03:51 PM, physicalgerard wrote:
I'm new to all this, so be gentle ;)
Is it possible the documentation in /yoga-laptop/yoga-laptop/README is outdated?
Then to load the module itself sudo insmod ./ideapad_laptop.ko The .ko file seems to have been removed.
Then, for /yoga-laptop/sensors:
As soon as I run ./setup, the terminal says
./setup: 5: ./setup: Bad substitution I'm running ubuntu 13.10 with gnome 3.10.
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3.
I got to this earlier than expected.
Grabthe README again. The new directions should work.
peter
On 03/16/2014 03:51 PM, physicalgerard wrote:
I'm new to all this, so be gentle ;)
Is it possible the documentation in /yoga-laptop/yoga-laptop/README is outdated?
Then to load the module itself sudo insmod ./ideapad_laptop.ko The .ko file seems to have been removed.
Then, for /yoga-laptop/sensors:
As soon as I run ./setup, the terminal says
./setup: 5: ./setup: Bad substitution I'm running ubuntu 13.10 with gnome 3.10.
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3.
I'm not sure what the problem with setup is.
Could you edit the file to add the -vx options to the first line of the script?
Then when you runthe script, you should be able to see what is causing the problem.
peter
On 03/16/2014 03:51 PM, physicalgerard wrote:
I'm new to all this, so be gentle ;)
Is it possible the documentation in /yoga-laptop/yoga-laptop/README is outdated?
Then to load the module itself sudo insmod ./ideapad_laptop.ko The .ko file seems to have been removed.
Then, for /yoga-laptop/sensors:
As soon as I run ./setup, the terminal says
./setup: 5: ./setup: Bad substitution I'm running ubuntu 13.10 with gnome 3.10.
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3.
It outputs to the terminal
#!/bin/sh -vx
# Fix up permissions for all sensors and run orientation program
# Single optional argument is group to use
group=${GROUPS[0]}
./setup: 5: ./setup: Bad substitution
When running ./orientation, output is
Failed to find the accel_3d sensor
And ./status returns
bash: ./status: /bin/csh: bad interpreter: No such file or directory
The problem is, where ubuntu saves its configuration files?
Hmm. You are running ubuntu, right?
Anyway, pull down the latest version, as I've made a few changes.
1/ You maynot have the IIO and sensor hub stuff installed.
Could you check whether the directory /sys/bus/iio/devices/iio:device0 exists? If not, you probably don't have the IIO or sensor hub subsysteminstalled because Ubuntu doesn't include it.
See whether the following works:
If it does work, then you can sudo make install
to install the drivers,
reboot, and try again.
WARNING: This will add new drivers to your installed system. Hopefully nothing will break, but ....
2/The status script used csh. I just fixed it to use sh instead.
3/ I'm not sure what the problem with setup is. I modified it to take an optional argument, which should be a group you belong to.
peter
On 03/17/2014 11:49 AM, physicalgerard wrote:
It outputs to the terminal
|#!/bin/sh -vx
Fix up permissions for all sensors and run orientation program
Single optional argument is group to use
group=${GROUPS[0]} ./setup: 5: ./setup: Bad substitution |
When running ./orientation, output is |Failed to find the accel_3d sensor|
And ./status returns |bash: ./status: /bin/csh: bad interpreter: No such file or directory|
The problem is, where ubuntu saves its configuration files?
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3#issuecomment-37854879.
Yes, ubuntu 13.10 (with unity and gnome 3.10 desktop environments)
1/ there is indeed no such folder. /sys/bus is the furthest I got. I tried getting the kernel-devel package, no luck initially. I'm following http://askubuntu.com/questions/359032/unable-to-locate-package-linux-kernel-devel now (as I said, I'm new to this ;)), but the third line (in the 'answer') is taking a long time and is getting many files from us.archive.ubuntu.com; I wonder if that's what going to solve this. I'll let you know when it's done.
2/ This script also looks for /sys/bus/iio. We'll have to see if the solution under /1/ solves this.
3/ It seems to have a problem with group=${GROUPS[0]}
, when I enter "groups" in a terminal it returns
gerardus adm cdrom sudo dip plugdev lpadmin sambashare
result of make
:
make -C /usr/src/kernels/3.11.0-18-generic SUBDIRS=/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers modules
make: *** /usr/src/kernels/3.11.0-18-generic: No such file or directory. Stop.
make: *** [default] Error 2
On Ubuntu you'll need the kernel-headers package, also perhaps build-essentials and then change in the Makefile the KDIR variable to: KDIR := /usr/src/linux-headers-$(shell uname -r) And for "sudo make install" I had to change in the Makefile the last lines (below install:) from /usr/lib/... to /lib/... - I don't know if there's a better way, but at least this works for me.
Thanks for the information.
I've added this information to the README and adjusted the Makefile to make the change easer, by adding a new variable.
peter
On 03/18/2014 01:06 AM, Nikolaus Polak wrote:
On Ubuntu you'll need the kernel-headers package, also perhaps build-essentials and then change in the Makefile the KDIR variable to: KDIR := /usr/src/linux-headers-$(shell uname -r) And for "sudo make install" I had to change in the Makefile the last lines (below install:) from /usr/lib/... to /lib/... - I don't know if there's a better way, but at least this works for me.
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3#issuecomment-37907718.
Thanks for your help and input.
I think the Makefile
's KDIR var (in the yoga_laptop directory) is not quite there yet; I changed it as @nikolauspolak suggested and that part then works under ubuntu.
For make
in the sensors/driver directory, I had to make the same change to the Makefile
as in the yoga_laptop directory (KDIR and DDIR variables) to get meaningful output. However, still no .ko files. Output of the terminal is now
gerardus@OpaUndOma:~/Downloads/yoga-laptop-master/sensors/drivers$ make
echo /usr/src/linux-headers-3.11.0-18-generic
/usr/src/linux-headers-3.11.0-18-generic
make -C /usr/src/linux-headers-3.11.0-18-generic SUBDIRS=/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-18-generic'
CC [M] /home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.o
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c: In function ‘hid_sensor_data_rdy_trigger_set_state’:
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:41:3: error: implicit declaration of function ‘sensor_hub_device_open’ [-Werror=implicit-function-declaration]
if (sensor_hub_device_open(st->hsdev))
^
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:49:3: error: implicit declaration of function ‘sensor_hub_device_close’ [-Werror=implicit-function-declaration]
sensor_hub_device_close(st->hsdev);
^
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:57:30: error: ‘struct hid_sensor_hub_attribute_info’ has no member named ‘logical_minimum’
state_val += st->power_state.logical_minimum;
^
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:58:32: error: ‘struct hid_sensor_hub_attribute_info’ has no member named ‘logical_minimum’
report_val += st->report_state.logical_minimum;
^
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c: In function ‘hid_sensor_remove_trigger’:
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:72:30: error: ‘struct hid_sensor_common’ has no member named ‘trigger’
iio_trigger_unregister(attrb->trigger);
^
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:73:24: error: ‘struct hid_sensor_common’ has no member named ‘trigger’
iio_trigger_free(attrb->trigger);
^
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c: In function ‘hid_sensor_setup_trigger’:
/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.c:104:25: error: ‘struct hid_sensor_common’ has no member named ‘trigger’
indio_dev->trig = attrb->trigger = trig;
^
cc1: some warnings being treated as errors
make[2]: *** [/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers/hid-sensor-trigger.o] Error 1
make[1]: *** [_module_/home/gerardus/Downloads/yoga-laptop-master/sensors/drivers] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-18-generic'
make: *** [default] Error 2
Maybe it helps, keeping in mind I might just have done something nooby.
Best regards
Thanks @pfps , the detection doesn't seem to work somehow:
nik@niks-Yoga:/tmp/yoga-laptop/sensors/drivers$ LANG=C make
echo /usr/src/kernels/3.13.0-18-generic
/usr/src/kernels/3.13.0-18-generic
make -C /usr/src/kernels/3.13.0-18-generic SUBDIRS=/tmp/yoga-laptop/sensors/drivers modules
make: *** /usr/src/kernels/3.13.0-18-generic: No such file or directory. Stop.
make: *** [default] Error 2
Right path would be /usr/src/linux-headers-3.13.0-18 @physicalgerard I guess you need a newer kernel, I'm on Ubuntu 14.04 / linux 3.13.0-18-generic.
I expect that this is the root cause of this problem. You should update to the most recent version of Ubuntu.
When I started working on the sensors, I was using kernel 3.12, which had problems. I switched to 3.13 fairly early on. I expect that kernel 3.11 does not have some of the required functionality. The driver code is taken from a development area and, Ibelieve, will be in 3.14.
peter
On 03/22/2014 11:09 AM, Nikolaus Polak wrote:
@physicalgerard https://github.com/physicalgerard I guess you need a newer kernel, I'm on Ubuntu 14.04 / linux 3.13.0-18-generic.
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3#issuecomment-38359618.
Alright, I've downloaded and installed the latest image of ubuntu 14.04. Linux kernel version is 3.13.0-19-generic. Here are my experiences:
1| First the sensors/drivers directory:
1.1| make
returned some errors, after changing the Makefile section
ifeq ($shell grep Fedora /etc/issue,"")
KDIR := /usr/src/linux-headers-$(shell uname -r)
DDIR := /lib/modules/$(shell uname -r)/kernel/drivers/
else
KDIR := /usr/src/kernels/$(shell uname -r)
DDIR := /usr/lib/modules/$(shell uname -r)/kernel/drivers/
endif
to
KDIR := /usr/src/linux-headers-$(shell uname -r)
DDIR := /lib/modules/$(shell uname -r)/kernel/drivers/
it seemed to run as planned.
1.2| The next step sudo make install
seemed to run just fine, the output was
install --owner=root --group=root --mode=644 hid-sensor-hub.ko /lib/modules/3.13.0-19-generic/kernel/drivers//hid
install --owner=root --group=root --mode=644 hid-sensor-trigger.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/common/hid-sensors
install --owner=root --group=root --mode=644 hid-sensor-accel-3d.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/accel
install --owner=root --group=root --mode=644 hid-sensor-als.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/light
install --owner=root --group=root --mode=644 hid-sensor-gyro-3d.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/gyro
install --owner=root --group=root --mode=644 hid-sensor-magn-3d.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/magnetometer
1.3| Testing 'orientation'
After rebooting, sudo ./orientation
is working! The screen rotates whenever it is held a certain way. Cool!
1.4| Testing 'status'
./status
had some errors. After changing the line
X=$1
to X=1
its output is
Sensor name: accel_3d
Channel /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_en:t status: -1
Channel /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_en:t status: -1
Channel /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_en:t status: -1
Buffer status: 0
Buffer length: 128
Current trigger: accel_3d-dev1
And if I include the code in a loop for X in 0 1 2 3
this is shown for each of the 4 sensors.
So, success!
So, the sensors/drivers part runs well this time I think.
2| Then the yoga_laptop part:
2.1| make
gives an error at first, after changing the Makefile section
KDIR := /usr/src/kernels/$(shell uname -r)
to
KDIR := /usr/src/linux-headers-$(shell uname -r)
the output is
NOTE: You need to have the kernel-devel package installed
echo /usr/src/linux-headers-3.13.0-19-generic
/usr/src/linux-headers-3.13.0-19-generic
make -C /usr/src/linux-headers-3.13.0-19-generic SUBDIRS=/home/gerardus/Downloads/origineel/yoga_laptop modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-19-generic'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-19-generic'
I guess that was successful.
2.2| sudo make install
required deleting /usr
from the Makefile line
install --owner=root --group=root --mode=644 ideapad-laptop.ko /usr/lib/modules/$(shell uname -r)/kernel/drivers/platform/x86
after which it outputs
install --owner=root --group=root --mode=644 ideapad-laptop.ko /lib/modules/3.13.0-19-generic/kernel/drivers/platform/x86
install --owner=root --group=root --mode=644 90-yoga-keyboard.hwdb /etc/udev/hwdb.d
udevadm hwdb --update
NOTE: You also need to cp -pr xkeycode ~/.Xmodmap
I think this means success right!?
2.3| sudo make install-keys
outputs
install --owner=root --group=root --mode=644 90-yoga-keyboard.hwdb /etc/udev/hwdb.d
udevadm hwdb --update
NOTE: You also need to cp -pr xkeycode ~/.Xmodmap
seems OK too.
2.4| Testing
After reboot, Fn F6 works perfectly, and also wifi is enabled immediately (needed to sudo rmmod ideapad-laptop
before)
So I think that this means that all is working. Thanks!!
On 03/26/2014 02:44 PM, physicalgerard wrote:
Alright, I've downloaded and installed the latest image of ubuntu 14.04. Linux kernel version is 3.13.0-19-generic. Here are my experiences:
1| First the sensors/drivers directory:
1.1| |make| returned some errors, after changing the Makefile section
ifeq ($shell grep Fedora /etc/issue,"") KDIR := /usr/src/linux-headers-$(shell uname -r) DDIR := /lib/modules/$(shell uname -r)/kernel/drivers/ else KDIR := /usr/src/kernels/$(shell uname -r) DDIR := /usr/lib/modules/$(shell uname -r)/kernel/drivers/ endif to
KDIR := /usr/src/linux-headers-$(shell uname -r) DDIR := /lib/modules/$(shell uname -r)/kernel/drivers/ it seemed to run as planned.
Hmm. What error did you get? What version of make (make --version) is on your system?
1.2| The next step |sudo make install| seemed to run just fine, the output was
install --owner=root --group=root --mode=644 hid-sensor-hub.ko /lib/modules/3.13.0-19-generic/kernel/drivers//hid install --owner=root --group=root --mode=644 hid-sensor-trigger.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/common/hid-sensors install --owner=root --group=root --mode=644 hid-sensor-accel-3d.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/accel install --owner=root --group=root --mode=644 hid-sensor-als.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/light install --owner=root --group=root --mode=644 hid-sensor-gyro-3d.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/gyro install --owner=root --group=root --mode=644 hid-sensor-magn-3d.ko /lib/modules/3.13.0-19-generic/kernel/drivers//iio/magnetometer 1.3| Testing 'orientation' After rebooting, |sudo ./orientation| is working! The screen rotates whenever it is held a certain way. Cool!
Excellent.
1.4| Testing 'status' |./status| had some errors. After changing the line |X=$1| to |X=1| its output is
Sensor name: accel_3d Channel /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_x_en:t status: -1 Channel /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_y_en:t status: -1 Channel /sys/bus/iio/devices/iio:device1/scan_elements/in_accel_z_en:t status: -1 Buffer status: 0 Buffer length: 128 Current trigger: accel_3d-dev1 And if I include the code in a loop |for X in 0 1 2 3| this is shown for each of the 4 sensors. So, success!
So, the sensors/drivers part runs well this time I think.
status is supposed to take an argument, e.g., status 1
for iio device 1.
I'm going to have it default to 0 for no argument.
2| Then the yoga_laptop part:
2.1| |make| gives an error at first, after changing the Makefile session
KDIR := /usr/src/kernels/$(shell uname -r) to
|KDIR := /usr/src/linux-headers-$(shell uname -r)|
|Hmm. This needs the same check for distribution as the drivers makefile|.
Does anyone have a good solution for this?
the output is
NOTE: You need to have the kernel-devel package installed echo /usr/src/linux-headers-3.13.0-19-generic /usr/src/linux-headers-3.13.0-19-generic make -C /usr/src/linux-headers-3.13.0-19-generic SUBDIRS=/home/gerardus/Downloads/origineel/yoga_laptop modules make[1]: Entering directory /usr/src/linux-headers-3.13.0-19-generic' Building modules, stage 2. MODPOST 1 modules make[1]: Leaving directory
/usr/src/linux-headers-3.13.0-19-generic'I guess that was successful.
No error, so successful. ;-)
2.2| |sudo make install| required deleting |/usr| from the Makefile line
|install --owner=root --group=root --mode=644 ideapad-laptop.ko /usr/lib/modules/$(shell uname -r)/kernel/drivers/platform/x86| |I made this change as well, as in Fedora you can use either.|||
after which it outputs
install --owner=root --group=root --mode=644 ideapad-laptop.ko /lib/modules/3.13.0-19-generic/kernel/drivers/platform/x86 install --owner=root --group=root --mode=644 90-yoga-keyboard.hwdb /etc/udev/hwdb.d udevadm hwdb --update NOTE: You also need to cp -pr xkeycode ~/.Xmodmap I think this means success right!?
Yes. Just remember to do the cp. I don't know how to do a copy into a user's home directory in a root make script.
2.3| |sudo make install-keys| outputs
install --owner=root --group=root --mode=644 90-yoga-keyboard.hwdb /etc/udev/hwdb.d udevadm hwdb --update NOTE: You also need to cp -pr xkeycode ~/.Xmodmap seems OK too.
make install does both install-driver and install-keys so this is not needed.
2.4| Testing After reboot, Fn F6 works perfectly, and also wifi is enabled immediately (needed to |sudo rmmod ideapad-laptop| before)
I think that you mean Fn F7 - the airplane key,
So I think that this means that all is working. Thanks!!
Looks good!
You should check to see whether Fn F6 works, whether the Novo key produces
anything, and whether the orientation lock key does anything. To make Fn F6
work right you have to hook it (XF86TouchPadToggle) up to a script that
toggles the touchpad on and off. To make the orientation lock key work right
you have to hook it (
How you do this depends on your window manager. In XFCE this is in Settings->Keyboard->Application Shortcuts
peter
The Makefile for the sensor drivers, line 7 'ifeq ($shell grep Fedora /etc/issue,"")' should include a check for Ubuntu. I am on version 14.04 same as @physicalgerard.
I fiddled with this makefile. It now uses /etc/os-release, and should work for Fedora and Ubuntu.
peter
On 03/27/2014 10:54 AM, keshto wrote:
The Makefile for the sensor drivers, line 7 'ifeq ($shell grep Fedora /etc/issue,"")' should include a check for Ubuntu. I am on version 14.04 same as @physicalgerard https://github.com/physicalgerard.
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3#issuecomment-38838196.
Hey peter,
Thanks for you support. Understood everything sofar, but I'm stuck at hooking up the orientation lock key to the command.
1| I take it that the orientation lock key send a
2| I tried out the command pkill --signal SIGUSR1 --exact orientation
in terminal, but nothing is happening. (I tried holding the laptop sideways for example). Is that expected?
@pfps new makefile is perfect, thanks!
The orientation lock key generates a
The orientation program listens for SIGUSR1 signals. If it gets one, then it toggles whether it is rotating the screen. If it gets two in short succession, it does a clockwise rotation and then stops rotating the screen.
|pkill --signal SIGUSR1 --exact orientation should send a SIGUSR1 signal to the orientation program||
|peter
On 03/28/2014 02:36 PM, physicalgerard wrote:
Hey peter,
Thanks for you support. Understood everything sofar, but I'm stuck at hooking up the orientation lock key to the command.
1| I take it that the orientation lock key send a o key combination? Whenever I press it with a terminal window active, a 'r' is typed.
2| I tried out the command |pkill --signal SIGUSR1 --exact orientation| in terminal, but nothing is happening. (I tried holding the laptop sideways for example). Is that expected?
Ruud
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3#issuecomment-38970725.
For home directory its sufficient to use ~ while running sudo, no solution for root shell however. Novo button produces Launch2. Works fine with in ubuntu.
Ok, after some digging i found that /usr/bin/logname returns current user name regardless of shell its running in (root or sudo). So something like
cp -pr xkeycode /home/logname
/.Xmodmap
should work.
And since this project basically replaces missing drivers, I think its valid option to make this change system wide in /etc/X11/Xmodmap
Good.
I modified the makefile to incorporate your suggestion.
peter
On 04/27/2014 02:47 AM, Jakub Buriánek wrote:
Ok, after some digging i found that /usr/bin/logname returns current user name regardless of shell its running in (root or sudo). So something like cp -pr xkeycode /home/|logname|/.Xmodmap should work
— Reply to this email directly or view it on GitHub https://github.com/pfps/yoga-laptop/issues/3#issuecomment-41492355.
I'm new to all this, so be gentle ;) Thanks for writing these patches to get the lenovo 2 pro laptops play nicely with linux!
2 Issues:
1) Is it possible the documentation in /yoga-laptop/yoga-laptop/README is outdated? It reads
But the .ko file seems to have been removed since.
2) Then, for /yoga-laptop/sensors: As soon as I run ./setup, the terminal says
I'm running ubuntu 13.10 with gnome 3.10.