{"id":4541,"date":"2018-09-08T08:50:21","date_gmt":"2018-09-08T11:50:21","guid":{"rendered":"https:\/\/blog.clusterweb.com.br\/?p=4541"},"modified":"2018-09-08T08:50:21","modified_gmt":"2018-09-08T11:50:21","slug":"wifi-nao-funciona-apos-o-suspend-resolvido","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4541","title":{"rendered":"WIFI N\u00c3O FUNCIONA AP\u00d3S O SUSPEND [RESOLVIDO]"},"content":{"rendered":"<h1>UMA PEQUENA INTRODU\u00c7\u00c3O<\/h1>\n<p>&nbsp;<\/p>\n<div>O\u00a0<a href=\"https:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>\u00a0utiliza um mecanismo de gerencia o as fun\u00e7\u00f5es de hardware. Este mecanismo conversa com o hardware do computador por uma camada de abstra\u00e7\u00e3o chamada\u00a0<em>HAL<\/em>\u00a0(<em>Hardware Abstraction Layer<\/em>), que \u00e9 parte componente dos subsistemas do Linux.<\/p>\n<p>As ferramentas\u00a0<em>pm-utils<\/em>\u00a0(<em>Power Manager Utils<\/em>) e\u00a0<em>systemd<\/em>\u00a0(<em>System and Service Manager<\/em>) fazem parte do conjunto de softwares da\u00a0<a href=\"https:\/\/freedesktop.org\/\" target=\"_blank\" rel=\"nofollow noopener\">freedesktop.org<\/a>\u00a0e s\u00e3o as respons\u00e1veis por executar a fun\u00e7\u00e3o sleep, que \u00e9 composto pelas opera\u00e7\u00f5es SUSPEND, HIBERNATE, HYBRID_SUSPEND e HYBRID_HIBERNATE. Todas tem a fun\u00e7\u00e3o que restaura a volta ao sistema (RESUME|THAW|POST).<\/p>\n<p>Por exemplo, se o usu\u00e1rio fechar a tampa do notebook (LID CLOSE ACTION), o sistema ir\u00e1 executar uma das fun\u00e7\u00f5es sleep que est\u00e1 configurada para esta a\u00e7\u00e3o. Ao abrir a tampa, o sistema ir\u00e1 executar a fun\u00e7\u00e3o de RESUME.<br \/>\n<!--more--><br \/>\nPor\u00e9m as ferramentas pm-util e systemd tem suas particularidades.<\/p>\n<p>O pm-utils trabalha com os flags suspend, hibernate, resume e thaw.<\/p>\n<p>O systemd trabalha com pre e post. O pre \u00e9 o momento anterior ao sleep e post e o momento posterior ao sleep, quando ocorre o evento wakeup. Fica mais ou menos assim:<\/p>\n<pre>    LID FECHADO ------(pre)-----&gt;  SLEEP ------------&gt; LID ABERTO -----(post)-----&gt; WAKEUP\r\n\r\n<\/pre>\n<h1>SOLU\u00c7\u00c3O<\/h1>\n<p>Descobri que ocorre um problema com os m\u00f3dulos do adaptador WIFI, me obrigando a derrubar os m\u00f3dulos e levant\u00e1-los em seguida. Para corrigir este problema bastava escrever um script, que seria executado assim que a fun\u00e7\u00e3o RESUME fosse executada. Por\u00e9m, para isso, \u00e9 necess\u00e1rio saber qual mecanismo \u00e9 utilizado pelo sistema para fazer o sleep.<\/p>\n<p>As distribui\u00e7\u00f5es mais recentes do Linux utilizam o systemd para isso. Os ambientes gr\u00e1ficos mais populares s\u00e3o integrados ao systemd. N\u00e3o sei se a ferramenta systemd \u00e9 dependente da pm-utils, mas \u00e9 interessante incluir a solu\u00e7\u00e3o nos dois casos. Para isso teremos que identificar o nome do m\u00f3dulo do WIFI.<\/p>\n<h1>COMO IDENTIFICAR OS M\u00d3DULOS DO WIFI<\/h1>\n<p>Para identificar o nome do m\u00f3dulo do WIFI execute como superusu\u00e1rio o comando a seguir:<\/p>\n<p><strong># lshw -C network<\/strong><\/p>\n<p>Separei o fragmento que nos interessa da sa\u00edda do comando:<\/p>\n<pre>  *-usb                     \r\n       description: Wireless interface\r\n       product: 802.11 bg WLAN\r\n       vendor: Ralink\r\n       physical id: 3\r\n       bus info: usb@1:3\r\n       logical name: wlx0019dba00811\r\n       version: 0.01\r\n       serial: 00:19:db:a0:08:11\r\n       capabilities: usb-2.00 ethernet physical wireless\r\n       configuration: broadcast=yes driver=rt73usb driverversion=4.15.0-20-generic firmware=1.7 ip=192.168.1.6 link=yes maxpower=300mA multicast=yes speed=480Mbit\/s wireless=IEEE 802.11\r\n\r\n<\/pre>\n<p>Podemos ver que em description aparece &#8220;Wireless interface&#8221;, que \u00e9 o nosso adaptador WIFI. A informa\u00e7\u00e3o que procuramos \u00e9 o nome do m\u00f3dulo de driver, informa\u00e7\u00e3o que est\u00e1 em configuration.<\/p>\n<p><samp>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 configuration: broadcast=yes driver=rt73usb driverversion=4.15.0-20-generic firmware=1.7 ip=192.168.1.6 link=yes maxpower=300mA multicast=yes speed=480Mbit\/s wireless=IEEE 802.11<\/samp><\/p>\n<p>O nome do m\u00f3dulo de driver \u00e9 o rt73usb.<\/p><\/div>\n<h1>O SCRIPT WIFI-WAKEUP<\/h1>\n<p>&nbsp;<\/p>\n<div>Segue o c\u00f3digo do script\u00a0<em>wifi-wakeup<\/em>:<\/p>\n<div class=\"codigo\"><span class=\"comentario\">#!\/bin\/sh<br \/>\n# Autor: Marcos Antonio Mello Estev\u00e3o.<br \/>\n# Nome do script: wifi-wakeup.<br \/>\n# Este script \u00e9 baseado no:<br \/>\n# \/etc\/pm\/sleep.d\/60_wpa_supplicant<br \/>\n# Este \u00e9 um script de a\u00e7\u00e3o que baixa e levanta o m\u00f3duli rt73usb do adaptador WIFI.<br \/>\n# O objetivo \u00e9 executar durante o evento RESUME, no caso do SUSPEND e THAW, no caso do HIBERNATE.<br \/>\n<\/span><br \/>\nPATH=\/sbin:\/usr\/sbin:\/bin:\/usr\/bin<\/p>\n<p>resume_action()<br \/>\n{<br \/>\nrmmod rt73usb<br \/>\nmodprobe rt73usb<br \/>\n}<\/p>\n<p>case &#8220;$1&#8221; in<br \/>\nresume|thaw|post)<br \/>\nresume_action<br \/>\n;;<br \/>\nesac<\/p>\n<p>exit 0<\/p><\/div>\n<h1>O LOCAL CORRETO ONDE COLOCAR O SCRIPT<\/h1>\n<p>O script \u00e9 bem simples e pode ser utilizado tanto no pm-utils quanto no systemd e foi testado nos dois softwares.<\/p>\n<p>Em pm-utils:<\/p>\n<p>O caminho dos scripts pre e post do pm-utils est\u00e1 localizado em:<\/p>\n<ul>\n<li>\/usr\/lib\/pm-utils\/sleep.d\/<\/li>\n<\/ul>\n<p>Em systemd:<\/p>\n<p>O caminho dos scripts pre e post do systemd est\u00e1 localizado em:<\/p>\n<ul>\n<li>\/lib\/systemd\/system-sleep\/<\/li>\n<\/ul>\n<p>Uma forma de identificar o caminho adequado para abrigar o script \u00e9 conhecer o local onde o script hdparm \u00e9 executado na fun\u00e7\u00e3o sleep. O comando a seguir ir\u00e1 ajud\u00e1-lo:<\/p>\n<p><strong># find \/lib \/usr -name &#8220;*hdparm*&#8221; | grep sleep\u00a0<\/strong><\/p>\n<p>A sa\u00edda do comando \u00e9 algo semelhante a isto:<\/p>\n<p><samp>\/lib\/systemd\/system-sleep\/hdparm<br \/>\n\/usr\/lib\/pm-utils\/sleep.d\/95hdparm-apm<\/samp><\/p>\n<p>Obs.: veja que em pm-utils \u00e9 necess\u00e1rio colocar um n\u00famero inteiro de dois d\u00edgitos que define a ordem da sequ\u00eancia da execu\u00e7\u00e3o do script. Neste caso, sugiro coloc\u00e1-lo mais ao final.<\/p>\n<p>Agora fa\u00e7a o teste.<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>UMA PEQUENA INTRODU\u00c7\u00c3O &nbsp; O\u00a0Linux\u00a0utiliza um mecanismo de gerencia o as fun\u00e7\u00f5es de hardware. Este mecanismo conversa com o hardware do computador por uma camada de abstra\u00e7\u00e3o chamada\u00a0HAL\u00a0(Hardware Abstraction Layer), que \u00e9 parte componente dos subsistemas do Linux. As ferramentas\u00a0pm-utils\u00a0(Power Manager Utils) e\u00a0systemd\u00a0(System and Service Manager) fazem parte do conjunto de softwares da\u00a0freedesktop.org\u00a0e s\u00e3o as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1082,730,1,830,42,51,495,85,68,548,35],"tags":[1222,1220,1219,904,698,1221,591],"class_list":["post-4541","post","type-post","status-publish","format-standard","hentry","category-centos-7-rhel-7","category-clusterweb","category-viazap","category-debian","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-proxy","category-redes-2","category-ubuntu-2","category-wireless","tag-resolvido","tag-apos","tag-funciona","tag-nao","tag-o","tag-suspend","tag-wifi"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4541"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4541\/revisions"}],"predecessor-version":[{"id":4542,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4541\/revisions\/4542"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}