рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рд╢рдВрд╕рдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ (рдПрд╕рд░ S3-391 рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ)

рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реИрдкрдЯреЙрдк рдХреА рдЬрд░реВрд░рдд рдереАред рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдк рдПрд╕рд░ S3-391 рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛, рдкрддрд▓рд╛, рд╣рд▓реНрдХрд╛, рддреЗрдЬ, рд▓реЗрдХрд┐рди рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВред рдПрдХ рдЦрд░рд╛рдм рд╕реНрдХреНрд░реАрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЬреЛ рд╡реИрд╕реЗ рднреА рдмрджрд▓рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдиреЗрдХреНрдЯрд░ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдлреНрд░реЗрдо рд╕реЗ рдЪрд┐рдкрдХрд╛ рд╣реБрдЖ рд╣реИ), рдкреНрд░рд╢рдВрд╕рдХ рдХреЗ рд╢реЛрд░ рдиреЗ рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ред
рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рд▓рд┐рдирдХреНрд╕ рдкрд░ рдбреАрдПрд╕рдбреАрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд▓реИрдкрдЯреЙрдк рдлреИрди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рди рдХреЗрд╡рд▓ рд▓реЗрдЦрдХ рдХреА рддрд░рд╣, рдореИрдВрдиреЗ рдПрд╕реАрдкреАрдЖрдИ рдФрд░ рдбреАрдПрд╕рдбреАрдЯреА рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ recompiled рдФрд░ рдЕрдкрдиреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреНрд░рд╢рдВрд╕рдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ "рд╕рдорд╛рди" рд▓рд╛рдЗрди рдирд╣реАрдВ рдорд┐рд▓ рдкрд╛рдИред ред



рдЗрд╕ рдмреАрдЪ, рдкреНрд░рд╢рдВрд╕рдХ рдХреЗ рд╢реЛрд░ рдиреЗ, рдореБрдЭреЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдФрд░ рдПрдпрд░ рдХрдВрдбреАрд╢рдирд░ рдХреЗ рд╢реЛрд░ рдкрд░ рдЕрднреА рднреА рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛рдо рдмрд╛рдзрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдШрд░ рдкрд░, рдЕрдХреЗрд▓реЗ рдореЗрд░реЗ рдХреЙрдХрд░реЛрдЪ рдХреЗ рд╕рд╛рде, рдкреНрд░рд╢рдВрд╕рдХ рдиреЗ рдореЗрд░реЗ рдорд╛рдирд╕ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ред
рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП Win7 рдореЗрдВ рд▓реМрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд┐рди рдореЗрдВ рдЪреАрдЬреЗрдВ рдХреИрд╕реА рд╣реИрдВ

рдкреНрд░рд╢рдВрд╕рдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо Microsoft рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд░реВрдк рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рд┐рдп рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдПред
рдлрд┐рд░ рднреА, рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдПрдирдмреАрдПрдлрд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рддреБрд░рдВрдд рдХрд╛рдо рдХрд┐рдпрд╛, рдЬреЛ рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рд╡рд╣ рдЧрддрд┐ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЯреНрд░рд┐рдЧрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдерд╛ред

рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рдореЗрд░реЗ рдЕрдиреБрдХреВрд▓ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рджрд┐рд▓ рдЕрднреА рднреА рдХрд┐рд╕реА рддрд░рд╣ рдмреЗрдЪреИрди рдерд╛ред

рдШрд░ рд▓реМрдЯ рдЖрдпрд╛

рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдЙрдбреА рдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдкреЗрдВрдЧреБрдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдлрд┐рд░ рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдирд┐рд░реНрдгрдп рд╕рд┐рд░реНрдл рд╕рддрд╣ рдкрд░ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд╣рд░рд╛ рдирд╣реАрдВ рдерд╛ред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реИред

рдПрдХ "рд╕рд╣реА рд╢рдмреНрдж" рдкрд╛рдпрд╛ рдЧрдпрд╛ рдЬрд┐рд╕ рдкрд░ Google: рдПрдВрдмреЗрдбреЗрдб рдирд┐рдпрдВрддреНрд░рдХ (рдИрд╕реА) ред

рдЬреИрд╕рд╛ рдХрд┐ rom.by рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ
рдПрдВрдмреЗрдбреЗрдб рдХрдВрдЯреЛрд▓рд░ рд╣рд┐рддрд╛рдЪреА рдПрдЪ 8 рдкреНрд░рдХрд╛рд░ (рдЙрд░реНрдл рд░реЗрдиреЗрд╕рд╕), рд╡рд┐рдирдмреЙрдиреНрдб W83L950D рдХрд╛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдЖрдорддреМрд░ рдкрд░ рдореЛрдмрд╛рдЗрд▓) рджреЛрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрд╕реАрдкреАрдУ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдИрд╕реА рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдмреИрдЯрд░реА рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рд╢рд╛рдорд┐рд▓ рд╣реИ: рдЗрд╕рдХреЗ рдЪрд╛рд░реНрдЬ рдореЛрдб рдХрд╛ рд╡рд┐рдХрд▓реНрдк, рдбрд┐рд╕реНрдЪрд╛рд░реНрдЬ рдХрдВрдЯреНрд░реЛрд▓ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдИрд╕реА рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдорджрдж рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░, рдПрдХ рдХреАрдмреЛрд░реНрдб рдирд┐рдпрдВрддреНрд░рдХ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рд╢рдВрд╕рдХ рдХреА рд╕реНрдерд┐рддрд┐ рднреА рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИред
рдпрд╣ 2 рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
1) рдкрдВрдЦреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ
2) рдХреИрд╕реЗ рдЙрдирдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП

рдирд┐рд░реНрдгрдп

рдПрдирдмреАрдПрдлрд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХреАред рдЖрдкрдХреЗ рд▓реИрдкрдЯреЙрдк (рдЕрд▓реНрдЯреНрд░рд╛рдмреБрдХ?) рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореМрдЬреВрдж рд╡реИрд▓реНрдпреВрдЬрд╝ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдФрд░ рдЫрд╣ рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рдореЛрддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ "рд╣рд╛рдЙ?" рдЯрд╛рд╕реНрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЬреЛ рддреБрд░рдВрдд рдФрд░ рдмрд┐рдирд╛ рд╕реБрдзрд╛рд░ рдХреЗ рдХрдорд╛рдпрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╢рд╛рдВрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк 3 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рд╢рд╛рдпрдж рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдмреЗрд╣рдж рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдореЛрддреА рдкрд░ рдХрднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛, рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рд╣реЛ / рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЬрд╛рдЧрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреБрдж:

рдореЗрд░реА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирдпрд╛ рд░реВрдк рджрд┐рдпрд╛
!/usr/bin/perl -w # Copyright (C) 2013 George Butskivsky butskivsky (at) gmail.com # # Version 0.1 (09-aug-2013) # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 3 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 5.004; use strict; use Fcntl; use POSIX; use File::Basename; my $fan_control_reg = 0x93; my $fan_manual_mode = 0x14; my $fan_auto_mode = 0x04; my $fan_speed_reg = 0x94; my $fan_speed_val_10 = 0xe6; # 10% of power my $fan_speed_val_20 = 0xc8; my $fan_speed_val_40 = 0x96; my $fan_speed_val_50 = 0x7e; my $fan_speed_val_60 = 0x64; my $fan_speed_val_80 = 0x32; sub initialize_ioports { sysopen (IOPORTS, "/dev/port", O_RDWR) or die "/dev/port: $!\n"; binmode IOPORTS; } sub close_ioports { close (IOPORTS) or print "Warning: $!\n"; } sub inb { my ($res,$nrchars); sysseek IOPORTS, $_[0], 0 or return -1; $nrchars = sysread IOPORTS, $res, 1; return -1 if not defined $nrchars or $nrchars != 1; $res = unpack "C",$res ; return $res; } # $_[0]: value to write # $_[1]: port to write # Returns: -1 on failure, 0 on success. sub outb { if ($_[0] > 0xff) { my ($package, $filename, $line, $sub) = caller(1); print "\n*** Called outb with value=$_[1] from line $line\n", "*** (in $sub). PLEASE REPORT!\n", "*** Terminating.\n"; exit(-1); } my $towrite = pack "C", $_[0]; sysseek IOPORTS, $_[1], 0 or return -1; my $nrchars = syswrite IOPORTS, $towrite, 1; return -1 if not defined $nrchars or $nrchars != 1; return 0; } sub wait_write { my $i = 0; while ((inb($_[0]) & 0x02) && ($i < 10000)) { sleep(0.01); $i++; } return -($i == 10000); } sub wait_read { my $i = 0; while (!(inb($_[0]) & 0x01) && ($i < 10000)) { sleep(0.01); $i++; } return -($i == 10000); } sub wait_write_ec { wait_write(0x66); } sub wait_read_ec { wait_read(0x66); } sub send_ec { if (!wait_write_ec()) { outb($_[0], 0x66); } if (!wait_write_ec()) { outb($_[1], 0x62); } } sub write_ec { if (!wait_write_ec()) { outb(0x81, 0x66 ); } if (!wait_write_ec()) { outb($_[0], 0x62); } if (!wait_write_ec()) { outb($_[1], 0x62); } } sub read_ec { if (!wait_write_ec()) { outb(0x80, 0x66 ); } if (!wait_write_ec()) { outb($_[0], 0x62); } if (!wait_read_ec()) { inb(0x62); } } sub print_regs { initialize_ioports(); my @arr = ("00","10","20","30","40","50","60","70","80","90","A0","B0","C0","D0","E0","F0", ""); my $i = 0; my $t = 0; print "\n \t00\t01\t02\t03\t04\t05\t06\t07\t|\t08\t09\t0A\t0B\t0C\t0D\t0E\t0F\n"; print " \t__\t__\t__\t__\t__\t__\t__\t__\t|\t__\t__\t__\t__\t__\t__\t__\t__\n"; print "00 |\t"; for ($i = 0; $i < 256; $i++) { $t = read_ec($i); print $t; print "\t"; if ((($i + 1) % 8) == 0){ if ((($i + 1) % 16) == 0) { if ($i != 255) { print "\n$arr[(($i-(($i + 1) % 16)) / 16) + 1] |\t"; } } else { print "|\t"; } } } print "\n"; close_ioports(); } if (!$ARGV[0]){ print "wrong arguments!\n"; print "usage:\n"; print "\'fan_control regs\' \t\t\t\tdumps all ec registers\n"; print "\'fan_control ?= <reg>\' \t\tQuery register's value\n"; print "\'fan_control := <reg> <val>\' \tSet register's value\n"; print "\'fan_control 10|20|40|50|60|80\' \tSet fan speed value in percents\n"; print "\'fan_control auto|manual\' \tSet fan policy\n"; print "\'fan_control getspeed\' \tGet current speed fan value in dec format (255-0) lesser is louder\n"; } elsif ($ARGV[0] eq "regs") { print_regs(); } elsif ($ARGV[0] eq "?=") { initialize_ioports(); my $r = hex($ARGV[1]); printf("REG[0x%02x] == 0x%02x\n", $r, read_ec($r)); close_ioports(); } elsif ($ARGV[0] eq ":=") { initialize_ioports(); my $r = hex($ARGV[1]); my $f = hex($ARGV[2]); my $val = read_ec($r); printf("REG[0x%02x] == 0x%02x\n", $r, $val); printf("REG[0x%02x] := 0x%02x\n", $r, $f); write_ec( $r, $f); printf("REG[0x%02x] == 0x%02x\n", $r, read_ec($r)); close_ioports(); } elsif ($ARGV[0] eq "10") { initialize_ioports(); write_ec( $fan_speed_reg, $fan_speed_val_10); close_ioports(); } elsif ($ARGV[0] eq "20") { initialize_ioports(); write_ec( $fan_speed_reg, $fan_speed_val_20); close_ioports(); } elsif ($ARGV[0] eq "40") { initialize_ioports(); write_ec( $fan_speed_reg, $fan_speed_val_40); close_ioports(); } elsif ($ARGV[0] eq "50") { initialize_ioports(); write_ec( $fan_speed_reg, $fan_speed_val_50); close_ioports(); } elsif ($ARGV[0] eq "60") { initialize_ioports(); write_ec( $fan_speed_reg, $fan_speed_val_60); close_ioports(); } elsif ($ARGV[0] eq "80") { initialize_ioports(); write_ec( $fan_speed_reg, $fan_speed_val_80); close_ioports(); } elsif ($ARGV[0] eq "manual") { initialize_ioports(); write_ec( $fan_control_reg, $fan_manual_mode); close_ioports(); } elsif ($ARGV[0] eq "auto") { initialize_ioports(); #write_ec( 0x93, 0x04); write_ec( $fan_control_reg, $fan_auto_mode); close_ioports(); } elsif ($ARGV[0] eq "getspeed") { initialize_ioports(); my $speed = read_ec($fan_speed_reg); my $dec_speed = sprintf("%d", $speed); printf("fan speed == %d\n", $dec_speed); close_ioports(); } else { print "wrong arguments!\n"; } 



рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рддрд░реНрдХ
 #!/usr/bin/perl -w $temp = `cat /sys/class/thermal/thermal_zone0/temp`; $silent = int(60000); $half = int(65000); $full = int(75000); if ($temp < $silent) { system("/usr/bin/perl -w /usr/local/bin/fan_control.pl 20"); } elsif ($temp < $half) { system("/usr/bin/perl -w /usr/local/bin/fan_control.pl 40"); } elsif ($temp < $full) { system("/usr/bin/perl -w /usr/local/bin/fan_control.pl 80"); } else { system("/usr/bin/perl -w /usr/local/bin/fan_control.pl auto"); } 



Lyauncher
 #!/usr/bin/bash /usr/local/bin/fan_control.pl manual while [ true ] do /usr/local/bin/fan_control_logic.pl sleep 5 done 



рдмрд╕ / usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди / рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЕрдзрд┐рдХрд╛рд░ рджреЗрдВ

рдХреНрд░рд╛рдВрддрд┐рдпреЛрдВ рдФрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб рддрд╛рдкрдорд╛рди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд▓реИрдкрдЯреЙрдк рд╣реИ, рддреЛ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдпрд╣ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдПрдирдмреАрдПрдлрд╕реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛
рдпрджрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЪрд▓рдХрд░ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 watch -n 1 sudo fan_control.pl regs 


рдпрджрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ, рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 sudo fan_control 

рдкрдВрдЦреЗ рдХреА рдЧрддрд┐ рдмрджрд▓рдиреА рдЪрд╛рд╣рд┐рдПред
рд▓рд╛рдн!

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред
рдЖрд▓реЛрдЪрдирд╛, рдкрд░рд┐рд╡рд░реНрдзрди рдФрд░ рд╕реБрдзрд╛рд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

Source: https://habr.com/ru/post/In189616/


All Articles