How to deactivate wifi and bluetooth in sleep mode?


#1

Hi. I use Vim1 and Vim2 in my car.

Vim1 and Vim2 goes into a sleep mode after pressing the “Power” button. Power consumption is 200-300mA in this mode.
After that Vim1 and Vim2 goes into low power mode through (Power consumption is 10mA in this mode):

  1. 5-7 sec - if Wifi and bluetooth does not connected - IT IS VERY NICE!!!
  2. 50-60 sec - if Wifi connected and bluetooth does not connected.
  3. NEVER - if bluetooth does connected.

How to deactivate wifi and bluetooth immediately after going to sleep?


VIM sleep
#2

And How to deactivate USB port immediately after going to sleep too? :slight_smile:


#3

davemf если под деактивацией USB ты предполагаешь отключение питания по USB шине то никак, по схеме это основное питание Vim после контроллера питания. Кстати у меня нормально уходит в сон и с WiFi и с синим зубом.


#4

питание ЮСБ как раз и выключается после ухода в глубокий сон, так же выключается светодиод на плате, и потребление падает на порядок. Если играет музыка или подключена блютуз гарнитура, то глубокого сна нет, и юсб не обесточиваются, гаснет только экран. А если wifi пытается подключится к сети или переподключится, то уход в глубокий сон происходит не через 5-7 секунд, а через 50-60 секунд.


#5

По USB я так думаю уходит в сон хаб, само питание с юсб не снимается, я хотел в своем блоке питания отслеживать сон платы по исчезновению 5в на юсб, но из этого ничего не вышло, плата уходит в сон, кушает порядка 20-30мА но 5в с юсб не пропадает, так-же как и 3,3в и 1,8в, (проверял на гребенке) только что пересмотрел схему, на порты питание идет через мосфет, на портах наверное отключается, завтра проверю, гарнитуру подключать не пробовал, ютуб не мешает уходу в сон, вайфай всегда подключен, так как пока только все тестируется на столе, до машины еще не дошло.


#6

Речь шла про порты, а не гребенку. Про ютуб тоже речи не было. В авто тестируется уже 4 месяца и работает так как написано в первом посту примерно у 15 человек.


#7

Да я уже понял что я вас не так понял:)


#8

UPDATE: 4. NEVER - if music is play.

@terry @Gouwa
Please help.

This is the real big problem for car use.

How to get the Khadas to go into deep sleep and ignore an active Bluetooth connection, playing music, and a network connection?


#9

Hi, Davemf
I will try to add support for it in this week. Thanks :grinning:


#10

You can refer to the following modifications. Have a try. Thanks :smile:

diff --git a/kernel/power/earlysuspend.c b/kernel/power/earlysuspend.c
index f428084..da2ec80 100644
--- a/kernel/power/earlysuspend.c
+++ b/kernel/power/earlysuspend.c
@@ -23,6 +23,7 @@
 
 #include "power.h"
 
+extern void release_whole_wake_lock(void);
 enum {
        DEBUG_USER_STATE = 1U << 0,
        DEBUG_SUSPEND = 1U << 2,
@@ -103,6 +104,7 @@ static void early_suspend(struct work_struct *work)
                pr_info("early_suspend: sync\n");
 
        sys_sync();
+       release_whole_wake_lock();
  abort:
        spin_lock_irqsave(&state_lock, irqflags);
        if (state == SUSPEND_REQUESTED_AND_SUSPENDED)
diff --git a/kernel/power/userwakelock.c b/kernel/power/userwakelock.c
index 33f95d9..590eb10 100644
--- a/kernel/power/userwakelock.c
+++ b/kernel/power/userwakelock.c
@@ -147,6 +147,26 @@ ssize_t wake_lock_show(
        return s - buf;
 }
 
+
+void release_whole_wake_lock(void)
+{
+
+       struct rb_node *n;
+       struct user_wake_lock *l;
+       struct user_wake_lock *k;
+
+       mutex_lock(&tree_lock);
+
+       for (n = rb_first(&user_wake_locks); n != NULL; n = rb_next(n)) {
+               l = rb_entry(n, struct user_wake_lock, node);
+               if (wake_lock_active(&l->wake_lock)) {
+                       k = lookup_wake_lock_name(l->name, 0, NULL);
+                       wake_unlock(&k->wake_lock);
+               }
+       }
+       mutex_unlock(&tree_lock);
+}
+
 ssize_t wake_lock_store(
        struct kobject *kobj, struct kobj_attribute *attr,
        const char *buf, size_t n)


#11

It is perfect!!! Many thanks!


#12

@terry
Hi!
For the “smart mirror” project we need a reverse target.

We need USB, wifi, bluetooth to work in sleep mode. :slight_smile:
How to activate USB in sleep mode?

Thank you!

PS: We have many projects on khadas…


#13

It’s impossible that USB, WiFI, BT work in deep sleep mode. :sweat:


#14

May be, deactivate deep sleep…
How to deactivate deep sleep? We does not need it on this project.


#15

You can try to modify the file common/kernel/power/suspend.c

diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index 2a4fc43..bedf4d7 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -400,6 +400,9 @@ int pm_suspend(suspend_state_t state)
 {
        int error;
 
+       if (1)
+               return 0;
+
        if (state <= PM_SUSPEND_ON || state >= PM_SUSPEND_MAX)
                return -EINVAL;