انجمنهای فارسی اوبونتو
کمک و پشتیبانی => سختافزار => نویسنده: 🇮🇷 در 03 خرداد 1401، 07:36 بظ
-
سلام
لپتاپ من دوتا باتری داره. چطور میتونم تعیین کنم که در هنگام شارژ اگر از لپتاپ استفاده کردم فقط از فلان باتری انرژی بگیره و باتری دیگه فقط شارژ بشه؟
از دبیان sid استفاده میکنم.
-
فایلها و دایرکتوریها داخل این مسیر رو ببینید. احتمالا به یه نتیجهای میرسید. اونجا بگردید که فایلی به اسم offline یا unbind یا همچین چیزی وجود نداره که دسترسی نوشتن هم داشته باشه. (دسترسی نوشتن به طور پیشفرض فقط برای مالک فایل هست، شاید بعضی وقتا برای گروه هم باشه.)
/sys/class/power_supply/
-
فایلها و دایرکتوریها داخل این مسیر رو ببینید. احتمالا به یه نتیجهای میرسید. اونجا بگردید که فایلی به اسم offline یا unbind یا همچین چیزی وجود نداره که دسترسی نوشتن هم داشته باشه. (دسترسی نوشتن به طور پیشفرض فقط برای مالک فایل هست، شاید بعضی وقتا برای گروه هم باشه.)
/sys/class/power_supply/
نتونستم چنین چیزی پیدا کنم
-
شاید بتونید از طریق بسته powertop یا tlp کاری انجام بدید. دستور acpi رو هم ببینید.
-
شاید بتونید از طریق بسته powertop یا tlp کاری انجام بدید. دستور acpi رو هم ببینید.
powertop که فکر نکنم در اون حد بتونه کمکم کنه. acpi هم که فقط نمایشدهنده یه سری اطلاعات هست. احتمالا tlp بتونه کمکم کنه. به نظرتون مثال موجود در صفحه man tlp (پیوست) چیزیه که من میخوام؟
-
فکر نکنم چیزی باشه که میخواهید.
-
تا جایی که من میدونم باتری ها سری و موازی میشن تا به ولتاژ و جریان مورد نیاز برسن و وقتی میگید دوتا باتری اون ها چند باتری یکی شده هستند اگه بازش کنید
دوتا بسته باتری مثلا هر کدوم شده مثلا ۱۲ ولت ۱ امپر مثلا هر کدوم ولی لپ تاپ ۱۲ ولت ۲ امپر میخواد برای همین اون باتری ها رو موازی می کنند که جریانش به دو امپر برسه وقتی به دو امپر رسید اخر کار دوتا سیم با ولتاژ و جریان مناسب میمونه که وصل میشه به مادربرد به همین دلیل اصلا چیز نرم افزاری نیست که شما بخواهید کنترلش کنید
-
ولی فکر کنم بتونید کاری کنید که وقتی تو شارژه باتری ها کنار گذاشته بشه و فقط برق از شارژر گرفته بشه
-
ولی فکر کنم بتونید کاری کنید که وقتی تو شارژه باتری ها کنار گذاشته بشه و فقط برق از شارژر گرفته بشه
اینم خوبه. میدونید چطور؟
تا جایی که من میدونم باتری ها سری و موازی میشن تا به ولتاژ و جریان مورد نیاز برسن و وقتی میگید دوتا باتری اون ها چند باتری یکی شده هستند اگه بازش کنید
دوتا بسته باتری مثلا هر کدوم شده مثلا ۱۲ ولت ۱ امپر مثلا هر کدوم ولی لپ تاپ ۱۲ ولت ۲ امپر میخواد برای همین اون باتری ها رو موازی می کنند که جریانش به دو امپر برسه وقتی به دو امپر رسید اخر کار دوتا سیم با ولتاژ و جریان مناسب میمونه که وصل میشه به مادربرد به همین دلیل اصلا چیز نرم افزاری نیست که شما بخواهید کنترلش کنید
یکی از باتریها اکسترنال هست. فکر نکنم همه اتفاقات سختافزاری باشه
-
وقتی دوتا باتری وصله خروجی این دستور رو بذارید
ls -l /sys/class/power_supply/
-
وقتی دوتا باتری وصله خروجی این دستور رو بذارید
ls -l /sys/class/power_supply/
total 0
lrwxrwxrwx 1 root root 0 مه 28 08:11 AC -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/PNP0C09:00/ACPI0003:00/power_supply/AC
lrwxrwxrwx 1 root root 0 مه 28 08:11 BAT0 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/PNP0C09:00/PNP0C0A:00/power_supply/BAT0
lrwxrwxrwx 1 root root 0 مه 28 08:11 BAT1 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/PNP0C09:00/PNP0C0A:01/power_supply/BAT1
-
تا جایی که من میدونم باتری ها سری و موازی میشن تا به ولتاژ و جریان مورد نیاز برسن و وقتی میگید دوتا باتری اون ها چند باتری یکی شده هستند اگه بازش کنید
دوتا بسته باتری مثلا هر کدوم شده مثلا ۱۲ ولت ۱ امپر مثلا هر کدوم ولی لپ تاپ ۱۲ ولت ۲ امپر میخواد برای همین اون باتری ها رو موازی می کنند که جریانش به دو امپر برسه وقتی به دو امپر رسید اخر کار دوتا سیم با ولتاژ و جریان مناسب میمونه که وصل میشه به مادربرد به همین دلیل اصلا چیز نرم افزاری نیست که شما بخواهید کنترلش کنید
باتریهای لپتاپها معمولا از نوع لیتیوم پلیمری هستند و به همین خاطر یه کنترلر شارژ هم دارند که شارژ، دشارژ، حداکثر جریان، ولتاژ، دما و ... اونها رو بررسی کنه.
اگه بشه یه جوری به این کنترلر دستور داد، باید بشه یه کاری کرد که مثلا یکی از باتریها از مدار خارج بشه.
اگه یه رابط spi یا i2c یا هر رابط دیگهای بین اون کنترلر و یکی از چیزهایی که کرنل بهش دسترسی داره وجود داشته باشه، باید بشه یه جوری به کنترلر فرمان داد.
شاید سازنده درایورهای لازم رو هم برای لینوکس داده باشه که در اینصورت کار راحتتره. شاید هم درایوری نداده باشه ولی خود توسعهدهندهای کرنل درایور ساخته باشند.
ممکن هم هست اصلا رابطی وجود نداشته باشه و کلا نشه از طریق سیستم عامل به اون کنترلر فرمان داد. (هرچند خیلی بعید میدونم هیچ رابطی بین اون کنترلر و بقیه قسمتهای مادربرد وجود نداشته باشه)
total 0
lrwxrwxrwx 1 root root 0 مه 28 08:11 AC -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/PNP0C09:00/ACPI0003:00/power_supply/AC
lrwxrwxrwx 1 root root 0 مه 28 08:11 BAT0 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/PNP0C09:00/PNP0C0A:00/power_supply/BAT0
lrwxrwxrwx 1 root root 0 مه 28 08:11 BAT1 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/PNP0C09:00/PNP0C0A:01/power_supply/BAT1
از خروجی که مشخصه دوتا باتری دارید (چشم بسته غیب میگم. ;D).
خروجی این دستور رو قرار بدید.
ls -l /sys/class/power_supply/*/
باتری خارجی چجوری به لپتاپ وصل شده؟
-
البته این کنترلر احتمالا یا خودش تنها کار می کنه و یا اگه دستور بگیره اون دستور از طرف مادربرده فکر نکنم بشه با سیستم عامل کنترلش کرد
-
از خروجی که مشخصه دوتا باتری دارید (چشم بسته غیب میگم. ;D).
خروجی این دستور رو قرار بدید.
ls -l /sys/class/power_supply/*/
باتری خارجی چجوری به لپتاپ وصل شده؟
/sys/class/power_supply/AC/:
total 0
lrwxrwxrwx 1 root root 0 مه 29 15:38 device -> ../../../ACPI0003:00
drwxr-xr-x 3 root root 0 مه 29 15:37 hwmon3
-r--r--r-- 1 root root 4096 مه 29 15:37 online
drwxr-xr-x 2 root root 0 مه 29 20:12 power
lrwxrwxrwx 1 root root 0 مه 29 15:37 subsystem -> ../../../../../../../../../class/power_supply
-r--r--r-- 1 root root 4096 مه 29 15:37 type
-rw-r--r-- 1 root root 4096 مه 29 15:37 uevent
drwxr-xr-x 2 root root 0 مه 29 15:37 wakeup27
/sys/class/power_supply/BAT0/:
total 0
-rw-r--r-- 1 root root 4096 مه 29 20:12 alarm
-r--r--r-- 1 root root 4096 مه 29 20:08 capacity
-r--r--r-- 1 root root 4096 مه 29 20:12 capacity_level
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_behaviour
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_control_end_threshold
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_control_start_threshold
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_start_threshold
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_stop_threshold
-r--r--r-- 1 root root 4096 مه 29 20:08 cycle_count
lrwxrwxrwx 1 root root 0 مه 29 15:38 device -> ../../../PNP0C0A:00
-r--r--r-- 1 root root 4096 مه 29 20:08 energy_full
-r--r--r-- 1 root root 4096 مه 29 20:08 energy_full_design
-r--r--r-- 1 root root 4096 مه 29 20:08 energy_now
drwxr-xr-x 3 root root 0 مه 29 20:07 hwmon1
-r--r--r-- 1 root root 4096 مه 29 20:08 manufacturer
-r--r--r-- 1 root root 4096 مه 29 20:08 model_name
drwxr-xr-x 2 root root 0 مه 29 20:12 power
-r--r--r-- 1 root root 4096 مه 29 20:08 power_now
-r--r--r-- 1 root root 4096 مه 29 20:08 present
-r--r--r-- 1 root root 4096 مه 29 20:08 serial_number
-r--r--r-- 1 root root 4096 مه 29 20:08 status
lrwxrwxrwx 1 root root 0 مه 29 15:37 subsystem -> ../../../../../../../../../class/power_supply
-r--r--r-- 1 root root 4096 مه 29 20:08 technology
-r--r--r-- 1 root root 4096 مه 29 15:37 type
-rw-r--r-- 1 root root 4096 مه 29 20:07 uevent
-r--r--r-- 1 root root 4096 مه 29 20:08 voltage_min_design
-r--r--r-- 1 root root 4096 مه 29 20:08 voltage_now
/sys/class/power_supply/BAT1/:
total 0
-rw-r--r-- 1 root root 4096 مه 29 20:12 alarm
-r--r--r-- 1 root root 4096 مه 29 20:08 capacity
-r--r--r-- 1 root root 4096 مه 29 20:12 capacity_level
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_behaviour
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_control_end_threshold
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_control_start_threshold
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_start_threshold
-rw-r--r-- 1 root root 4096 مه 29 20:12 charge_stop_threshold
-r--r--r-- 1 root root 4096 مه 29 20:08 cycle_count
lrwxrwxrwx 1 root root 0 مه 29 15:38 device -> ../../../PNP0C0A:01
-r--r--r-- 1 root root 4096 مه 29 20:08 energy_full
-r--r--r-- 1 root root 4096 مه 29 20:08 energy_full_design
-r--r--r-- 1 root root 4096 مه 29 20:08 energy_now
drwxr-xr-x 3 root root 0 مه 29 20:07 hwmon2
-r--r--r-- 1 root root 4096 مه 29 20:08 manufacturer
-r--r--r-- 1 root root 4096 مه 29 20:08 model_name
drwxr-xr-x 2 root root 0 مه 29 20:12 power
-r--r--r-- 1 root root 4096 مه 29 20:08 power_now
-r--r--r-- 1 root root 4096 مه 29 20:08 present
-r--r--r-- 1 root root 4096 مه 29 20:08 serial_number
-r--r--r-- 1 root root 4096 مه 29 20:08 status
lrwxrwxrwx 1 root root 0 مه 29 15:37 subsystem -> ../../../../../../../../../class/power_supply
-r--r--r-- 1 root root 4096 مه 29 20:08 technology
-r--r--r-- 1 root root 4096 مه 29 15:37 type
-rw-r--r-- 1 root root 4096 مه 29 20:07 uevent
-r--r--r-- 1 root root 4096 مه 29 20:08 voltage_min_design
-r--r--r-- 1 root root 4096 مه 29 20:08 voltage_now
-
به نظر میاد قابلیتی وجود داره که تنظیم کنید باتری چقدر شارژ بشه. فکر کنم با ترکیب این قابلیت با یه سری قانون udev و یه اسکریپت بتونید به چیزی که میخواهید برسید.
ببینید توی این فایلها چی نوشته شده.
charge_behaviour
charge_control_end_threshold
charge_control_start_threshold
charge_start_threshold
charge_stop_threshold
به این سوال جواب ندادید:
باتری خارجی چجوری به لپتاپ وصل شده؟
-
به نظر میاد قابلیتی وجود داره که تنظیم کنید باتری چقدر شارژ بشه. فکر کنم با ترکیب این قابلیت با یه سری قانون udev و یه اسکریپت بتونید به چیزی که میخواهید برسید.
ببینید توی این فایلها چی نوشته شده.
charge_behaviour
charge_control_end_threshold
charge_control_start_threshold
charge_start_threshold
charge_stop_threshold
cat charge_behaviour charge_control_end_threshold charge_control_start_threshold charge_start_threshold charge_stop_threshold
[auto] inhibit-charge force-discharge
100
0
0
100
فکر نکنم بین اینا چیزی که نیازم رو برطرف کنه وجود داشته باشه
باتری خارجی چجوری به لپتاپ وصل شده؟
یه محل روی لپتاپ برای نصب باتری دوم وجود داره
-
cat charge_behaviour charge_control_end_threshold charge_control_start_threshold charge_start_threshold charge_stop_threshold
[auto] inhibit-charge force-discharge
100
0
0
100
اینجوری که درست معلوم نیست هر خط مربوط به کدوم فایله.
مشخص کنید محتویات هر فایل دقیقا چی هست.
فکر نکنم بین اینا چیزی که نیازم رو برطرف کنه وجود داشته باشه
با ترکیب اون قابلیتها با یه سری قانون udev و یه اسکریپت باید بشه اینکاری رو که میخواهید انجام داد.
-
اینجوری که درست معلوم نیست هر خط مربوط به کدوم فایله.
مشخص کنید محتویات هر فایل دقیقا چی هست.
هر خط به ترتیب از بالا به پایین:
charge_behaviour
charge_control_end_threshold
charge_control_start_threshold
charge_start_threshold
charge_stop_threshold
-
به نظر میاد لپتاپ قابلیتی داره که رفتار شارژ شدن رو مشخص کنید. میتونید مشخص کنید که از شارژ جلوگیری بشه یا اینکه باتری به اجبار دشارژ بشه یا اینکه به طور خودکار تصمیم گرفته بشه که چیکار کنه.
inhibit-charge رو توی فایل charge-behavior بنویسید، شارژر رو متصل کنید و ببینید شارژ انجام میشه با نه.
-
به نظر میاد لپتاپ قابلیتی داره که رفتار شارژ شدن رو مشخص کنید. میتونید مشخص کنید که از شارژ جلوگیری بشه یا اینکه باتری به اجبار دشارژ بشه یا اینکه به طور خودکار تصمیم گرفته بشه که چیکار کنه.
inhibit-charge رو توی فایل charge-behavior بنویسید، شارژر رو متصل کنید و ببینید شارژ انجام میشه با نه.
۱- تغییری در این فایل باتری اکسترنال نمیشه ایجاد کرد. با ویرایشگرهای مختلف با دسترسی ریشه تلاش کردم نشد. برای تغییر باید فایل مربوط به باتری داخلی رو تغییر بدم تا هر دوشون عوض بشن
۲- عبارت inhibit-charge رو که این فایل نوشتم، خود به خود تبدیل شد به auto [inhibit-charge] force-discharge
۳- الآن هیچ کدوم از باتریها شارژ نمیشن
-
بهتره به جای اینکه از ویرایشگر متن استفاده کنید، با دستور echo اینکار رو انجام بدید.
مثلا اینجوری مقدار auto رو توی فایل بنویسید:
echo auto > /sys/class/power_supply/BAT0/charge-behavior
دستور بالا به دسترسی روت نیاز داره تا درست اجرا بشه.
اگه دستور بالا رو توسط کاربری به غیر از روت اجرا کنید، حتی اگه همراه دستور sudo هم بزنید، باز کار نمیده چون نمیتونید خروجی استاندارد رو توی فایلی بنویسید که دسترسی نوشتن روی اون ندارید. به عبارتی دستور بالا فقط وقتی کار میکنه که یا مستقیم توسط کاربر روت یا اسکریپتی با دسترسی کاربر روت اجرا شده باشه.
یه راه برای مشکل بالا اینه که از دستور tee کمک بگیرید. اینجوری:
echo auto | sudo tee /sys/class/power_supply/BAT0/charge_behavior
دستور tee، ورودی استاندارد رو توی فایلی که مشخص شده و همینطور خروجی استاندارد مینویسه.
الان وضعیت رو به حالت قبل برگردونید تا باتریها دوباره شارژ بشن. یعنی مقدار auto رو توی فایل charge-behavior بنویسید.
echo auto | sudo tee /sys/class/power_supply/BAT0/charge-behavior
اگه مقدار charge-behavior رو تغییر بدید، باز هم بعد از راهاندازی مجدد یا خاموش و روشن شدن کامل، به حالت قبل برمیگرده یا اینکه روی همون مقدار قبلی میمونه؟
-
بهتره به جای اینکه از ویرایشگر متن استفاده کنید، با دستور echo اینکار رو انجام بدید.
مثلا اینجوری مقدار auto رو توی فایل بنویسید:
echo auto > /sys/class/power_supply/BAT0/charge-behavior
دستور بالا به دسترسی روت نیاز داره تا درست اجرا بشه.
اگه دستور بالا رو توسط کاربری به غیر از روت اجرا کنید، حتی اگه همراه دستور sudo هم بزنید، باز کار نمیده چون نمیتونید خروجی استاندارد رو توی فایلی بنویسید که دسترسی نوشتن روی اون ندارید. به عبارتی دستور بالا فقط وقتی کار میکنه که یا مستقیم توسط کاربر روت یا اسکریپتی با دسترسی کاربر روت اجرا شده باشه.
یه راه برای مشکل بالا اینه که از دستور tee کمک بگیرید. اینجوری:
echo auto | sudo tee /sys/class/power_supply/BAT0/charge_behavior
دستور tee، ورودی استاندارد رو توی فایلی که مشخص شده و همینطور خروجی استاندارد مینویسه.
الان وضعیت رو به حالت قبل برگردونید تا باتریها دوباره شارژ بشن. یعنی مقدار auto رو توی فایل charge-behavior بنویسید.
echo auto | sudo tee /sys/class/power_supply/BAT0/charge-behavior
ممنون
اگه مقدار charge-behavior رو تغییر بدید، باز هم بعد از راهاندازی مجدد یا خاموش و روشن شدن کامل، به حالت قبل برمیگرده یا اینکه روی همون مقدار قبلی میمونه؟
عوض نمیشه
-
الان میخواهید دقیقا رفتار باتریها چجوری باشه؟
-
الان میخواهید دقیقا رفتار باتریها چجوری باشه؟
در زمان اتصال به شارژ، انرژی یا از باتری داخلی استفاده بشه یا کلا از طریق برق AC
-
این رو نمیدونم باید چیکار کنید. اون اول که مسئله شما یه چیز دیگه بود.
-
این رو نمیدونم باید چیکار کنید. اون اول که مسئله شما یه چیز دیگه بود.
همون بود. میخواستم در زمان شارژ از باتری اکسترنال استفاده نشه