smq

joined 3 weeks ago
 

Hey Lemmy!

This is a solution for fastboot not listing an Android device.

my device specs

my device specs

  • computer OS: Linux Mint 21.3
  • computer architecture: x86_64
  • USB cable: probably USB 2.0, but I'm not sure. It was not the one that came with my phone
  • phone model: Xiaomi MI 6X (wayne)
  • phone OS: MIUI 12

problem description

problem description

While my phone was in fastboot mode, I couldn't connect to it using the Linux fastboot command.

  • fastboot devices showed nothing:

    me@computer:~$ fastboot devices
    me@computer:~$ 
    
  • lsusb listed my phone if it was in normal system mode. If I was in fastboot, lsusb does not list my phone.

  • adb worked fine—but only if I ran it as root. If I started it as a normal user, it showed this error:

    me@computer:~$ adb devices
    List of devices attached
    n22i3nf0    no permissions (user in plugdev group; are your udev rules wrong?);
    see [http://developer.android.com/tools/device.html]
    me@computer:~$
    

    I had to do these steps to make adb devices list it properly:

    me@computer:~$ adb kill-server
    me@computer:~$ sudo adb start-server
    
  • other phones were working fine with both adb and fastboot.

solution

solution

I had to add my phone's device and vendor ID to /etc/udev/rules.d/51-android.rules. My other phones were added already, that's why fastboot worked with them, but this phone wasn't added, so it did not work. This solution is also the standard solve for the "no permissions (user in plugdev group)" error, so if the below guide doesn't work, try someone else's guide.

The below text is from this gist, with some edits.

  1. First, we are going to determine your phone's vendor ID and device ID. Reboot your phone into normal system mode. (we can't get the IDs in fastboot mode because lsusb doesn't show the device.)
  2. Unplug your device from the computer and type lsusb in the terminal. You should get an output similar to this:
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 033: ID 0cf3:3004 Atheros Communications, Inc. AR3012 Bluetooth 4.0
Bus 003 Device 047: ID 045e:07fd Microsoft Corp. Nano Transceiver 1.1
Bus 003 Device 002: ID 174f:148d Syntek 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  1. Now plug your phone into the computer and run the command again, the output should be different:
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 033: ID 0cf3:3004 Atheros Communications, Inc. AR3012 Bluetooth 4.0
Bus 003 Device 047: ID 045e:07fd Microsoft Corp. Nano Transceiver 1.1
Bus 003 Device 002: ID 174f:148d Syntek 
Bus 003 Device 060: ID 05c6:6765 Qualcomm, Inc. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  1. Take a note of the new output ID. For me it's Bus 003 Device 060: ID 05c6:6765 Qualcomm, Inc.

  2. record the characters after ID (in this case, it's 05c6:6765). The four characters before the colon are the vendor ID and the four characters after are the device ID.

  3. edit the file /etc/udev/rules.d/51-android.rules and add this:

    SUBSYSTEM=="usb", ATTR{idVendor}=="vendor_id", ATTR{idProduct}=="device_id", MODE="0666", GROUP="plugdev"
    

    make sure to replace vendor_id with your vendor ID and device_id with your device ID.

  4. Save and close the file.

  5. Now in the terminal, run this, which makes the file readable by all users. I don't know why this is necessary.

    sudo chmod a+r /etc/udev/rules.d/51-android.rules
    
  6. restart your computer. This is what I did to make it work, but if you don't want to, other methods I've seen are:

    • sudo systemctl restart udev
    • or:
      sudo udevadm control --reload-rules
      sudo udevadm trigger
      
  7. Now you can try the command fastboot devices and it should successfully list your device as one of the entries.

still doesn't work?

Other solutions which I have seen:

  • use a different USB cable
  • use a different USB port
  • use a different computer
  • use a different OS: switch from Linux to Windows, or vice versa, or use a different version of Ubuntu.

Good luck!

16
submitted 6 days ago* (last edited 6 days ago) by [email protected] to c/[email protected]
 

I made this a few years ago from the game assets. Thought you folks might like it.

the version from the Lemmy post media preview

a version with "You can do this." written in Renogare (the Celeste UI font)

image properties:

  • 2136 pixels wide, 1300 pixels tall
  • around 3.5MB each
  • PNG
[–] [email protected] 3 points 6 days ago
[–] [email protected] 5 points 1 week ago (1 children)

Thanks, but there isn't a "turn off play service availability" option in my settings...

[–] [email protected] 1 points 1 week ago

not sure about standard, but privacyguides.org has some nice resources for getting started. I recommend their "threat model" resource in particular; it shows you what direction you should work towards depending on your privacy goals.

Privacy Guides has an Android page as well.

[–] [email protected] 1 points 1 week ago* (last edited 1 week ago) (1 children)

Which LineageOS are you using? Mine has it on the very left and I wish it was on the bottom.

 

Hey Lemmy!

I have an app that keeps showing a pop up that it "doesn't run without Google play services". It in fact runs just fine, except for the pop up, which is extremely annoying. What are my options for removing it? And, how do apps know that I don't have Google play services?

extra details

  • I use LineageOS 21 on Android 14

  • the app is the paid version of TripView (installed via Aurora Store)

  • I tried installing microG, but it didn't remove the pop up—maybe because I haven't set up the "system spoof signature" option. But even if I do set it up, I'm concerned about:

    1. microG running some background services, wasting battery (because the app functions without any extra services)

    2. unnecessarily connecting/sending information to Google's servers

edit for clarity:

The "pop up" is an in app widget-like thing, not an Android notification. It looks like this:

it's not solved yet, but thanks to everyone for your support! :)

[–] [email protected] 2 points 1 week ago

it's an open access article!

[–] [email protected] 2 points 1 week ago
[–] [email protected] 2 points 1 week ago

I don't know what perchance.org is but good luck!

9
submitted 1 week ago* (last edited 1 week ago) by [email protected] to c/[email protected]
 

Mobile Websites: the Viewport Meta Tag

If you're starting out making a website work on mobile, the viewport meta tag is important.

My website looked so much smaller on mobile than if I just made the browser window thinner and I had no idea why. I looked it up, and most of the answers suggested using the @media (width) query to target thin screens. There were also some that suggested the viewport meta tag, but I didn't know what that was, so I thought "pfft that won't work" and ignored it.

So I tried using @media to make the font bigger if the screen width was below 500px. That solved the problem for mobile, but made the text in my thin desktop browser window huge. So I kept looking, eventually found the viewport meta tag again, tried it out of desperation, and everything just worked.

<meta name="viewport" content="width=device-width, initial-scale=1" /> 

This tag goes between <head> and </head> in your html file. (More information)

The problem was that mobile browsers, if they don't see a meta viewport tag, scales everything down, including the size of a px, etc. The content="width=device-width part tells the browser to not scale things down. The initial-scale=1 part is not important in this scenario, but a bunch of answers include it with content=, so I might as well explain it. It makes the browser's pinch-gesture zoom level be set to 1, which is the default anyways, so theoretically it won't make a difference if you take it out.

For a more detailed explation, see https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag

I think a lot of guides for responsive web design/mobile-friendly web design don't mention this, or only put it towards the end. Which is not that great. Surely it's not just me that struggled for so long with @media to no avail.

text-size-adjust

Another thing I noticed was the font would get bigger if I made my phone landscape. But not the font of the entire page, only the default body text font, so everything was not only bigger than necessary but also out of proportion. After looking it up again, I found this answer that suggested using text-size-adjust.

I put text-size-adjust: none; into my css, and it didn't work. I then tried the browser-specific versions suggested in the answer, and also set them to 100%.

-webkit-text-size-adjust: 100%;
-moz-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;

That worked!

// End.

[–] [email protected] 2 points 1 week ago

I'm glad you like it!

 

Hey Lemmy!

Exactly as the title says.

I'm a user, not a server admin, so this is about deleting messages I've sent rather than cleaning old messages on a server. Ideally I'm looking for a script which I can run on a timer once a day, and each time it runs, it will delete all my messages, or my messages in some specified rooms, that are older than say two weeks. Basically an automated finger that presses the delete button repeatedly.

I know about m.room.retention but I don't want to have to set it for every room. And it doesn't seem to be reliable; it doesn't work in a matrix.org test room I set up with one minute retention. Even when I cleared the cache.

The closest I've found is this branch, but as this issue mentioned, it purges all messages rather than only messages older than X time.

If no one has a better script, I'll write one myself or fork the above script. But in case anyone here's already gone to the trouble... I won't have to learn the Matrix API :)


Edit 1:

I did make the script, but it's slow; each message deletion sent to matrix.org has to wait about 4 seconds due to rate limiting. I send a lot of messages per day, so it's barely an acceptable solution.

The whole concept also feels awkwardly inefficient because I have to send a request for each message, rather than the server and clients running their own timers.

I moved to Delta Chat for now, for its disappearing messages.

I found some nice comparison tables of instant messaging services that could be of use: