How to read back a fan speed?

Multi tool use
I am on a custom board using an i.MX6. I am using Yocto (Pyro) to build my kernel (4.14.16).
I am using the generic imx6qdl.dtsi device tree entry for PWM2 to drive the fan and it appears to work fine. The fan has a Tachometer input, which is connected to GPIO2_7. How do I read the fan speed? I have seen device tree blobs for cooling devices, but none of the examples seem to have a tachometer to monitor the fan's speed.
embedded yocto device-tree fan
add a comment |
I am on a custom board using an i.MX6. I am using Yocto (Pyro) to build my kernel (4.14.16).
I am using the generic imx6qdl.dtsi device tree entry for PWM2 to drive the fan and it appears to work fine. The fan has a Tachometer input, which is connected to GPIO2_7. How do I read the fan speed? I have seen device tree blobs for cooling devices, but none of the examples seem to have a tachometer to monitor the fan's speed.
embedded yocto device-tree fan
Have you checked/sys/class/hwmon/
(and/sys/class/pwm/
)? I'm guessing yes, but just want to be sure there isn't an easy solution there.
– derobert
Mar 8 at 20:53
I did. I could set the PWM for the fan from the/sys/class/pwm/
but there was no mechanism to read back the speed (just the PWM that i had set it to). All that I have in/sys/class/hwmon
were temperature sensors.
– Eskimoalva
Mar 11 at 12:23
add a comment |
I am on a custom board using an i.MX6. I am using Yocto (Pyro) to build my kernel (4.14.16).
I am using the generic imx6qdl.dtsi device tree entry for PWM2 to drive the fan and it appears to work fine. The fan has a Tachometer input, which is connected to GPIO2_7. How do I read the fan speed? I have seen device tree blobs for cooling devices, but none of the examples seem to have a tachometer to monitor the fan's speed.
embedded yocto device-tree fan
I am on a custom board using an i.MX6. I am using Yocto (Pyro) to build my kernel (4.14.16).
I am using the generic imx6qdl.dtsi device tree entry for PWM2 to drive the fan and it appears to work fine. The fan has a Tachometer input, which is connected to GPIO2_7. How do I read the fan speed? I have seen device tree blobs for cooling devices, but none of the examples seem to have a tachometer to monitor the fan's speed.
embedded yocto device-tree fan
embedded yocto device-tree fan
asked Mar 6 at 16:33
EskimoalvaEskimoalva
334
334
Have you checked/sys/class/hwmon/
(and/sys/class/pwm/
)? I'm guessing yes, but just want to be sure there isn't an easy solution there.
– derobert
Mar 8 at 20:53
I did. I could set the PWM for the fan from the/sys/class/pwm/
but there was no mechanism to read back the speed (just the PWM that i had set it to). All that I have in/sys/class/hwmon
were temperature sensors.
– Eskimoalva
Mar 11 at 12:23
add a comment |
Have you checked/sys/class/hwmon/
(and/sys/class/pwm/
)? I'm guessing yes, but just want to be sure there isn't an easy solution there.
– derobert
Mar 8 at 20:53
I did. I could set the PWM for the fan from the/sys/class/pwm/
but there was no mechanism to read back the speed (just the PWM that i had set it to). All that I have in/sys/class/hwmon
were temperature sensors.
– Eskimoalva
Mar 11 at 12:23
Have you checked
/sys/class/hwmon/
(and /sys/class/pwm/
)? I'm guessing yes, but just want to be sure there isn't an easy solution there.– derobert
Mar 8 at 20:53
Have you checked
/sys/class/hwmon/
(and /sys/class/pwm/
)? I'm guessing yes, but just want to be sure there isn't an easy solution there.– derobert
Mar 8 at 20:53
I did. I could set the PWM for the fan from the
/sys/class/pwm/
but there was no mechanism to read back the speed (just the PWM that i had set it to). All that I have in /sys/class/hwmon
were temperature sensors.– Eskimoalva
Mar 11 at 12:23
I did. I could set the PWM for the fan from the
/sys/class/pwm/
but there was no mechanism to read back the speed (just the PWM that i had set it to). All that I have in /sys/class/hwmon
were temperature sensors.– Eskimoalva
Mar 11 at 12:23
add a comment |
1 Answer
1
active
oldest
votes
I was unable to find a device tree solution, but found enough code snippets to make an application to read it. Basically I just set up an interrupt on the GPIO and used clock_gettime
to measure the period between edges. It requires a lot of filtering, but I am only using it to make sure the fan is running so that is fine.
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504763%2fhow-to-read-back-a-fan-speed%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I was unable to find a device tree solution, but found enough code snippets to make an application to read it. Basically I just set up an interrupt on the GPIO and used clock_gettime
to measure the period between edges. It requires a lot of filtering, but I am only using it to make sure the fan is running so that is fine.
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
add a comment |
I was unable to find a device tree solution, but found enough code snippets to make an application to read it. Basically I just set up an interrupt on the GPIO and used clock_gettime
to measure the period between edges. It requires a lot of filtering, but I am only using it to make sure the fan is running so that is fine.
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
add a comment |
I was unable to find a device tree solution, but found enough code snippets to make an application to read it. Basically I just set up an interrupt on the GPIO and used clock_gettime
to measure the period between edges. It requires a lot of filtering, but I am only using it to make sure the fan is running so that is fine.
I was unable to find a device tree solution, but found enough code snippets to make an application to read it. Basically I just set up an interrupt on the GPIO and used clock_gettime
to measure the period between edges. It requires a lot of filtering, but I am only using it to make sure the fan is running so that is fine.
answered Mar 8 at 20:09
EskimoalvaEskimoalva
334
334
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
add a comment |
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
BTW, might be easier to count interrupts instead, and e.g., read your counter once per second (having your read thread sleep). Then you probably won't need filtering.
– derobert
Mar 11 at 15:49
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504763%2fhow-to-read-back-a-fan-speed%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
d9hwvOxia2GL2
Have you checked
/sys/class/hwmon/
(and/sys/class/pwm/
)? I'm guessing yes, but just want to be sure there isn't an easy solution there.– derobert
Mar 8 at 20:53
I did. I could set the PWM for the fan from the
/sys/class/pwm/
but there was no mechanism to read back the speed (just the PWM that i had set it to). All that I have in/sys/class/hwmon
were temperature sensors.– Eskimoalva
Mar 11 at 12:23