Coder Social home page Coder Social logo

devicefarmer / stf Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openstf/stf

2.6K 70.0 422.0 98.86 MB

Control and manage Android devices from your browser.

Home Page: https://devicefarmer.github.io

License: Other

JavaScript 83.63% CSS 3.66% HTML 0.06% Shell 0.13% Dockerfile 0.38% Pug 10.85% Less 0.03% SCSS 1.26%
remote-control android debugging testing hacktoberfest

stf's Introduction

STF

Build Status Docker Pulls npm

STF (or Smartphone Test Farm) is a web application for debugging smartphones, smartwatches and other gadgets remotely, from the comfort of your browser.

Overview

Close-up of device shelf

Super short screencast showing usage

Contributors

Thank you to all the people who have already contributed to STF!

Features

  • OS support
    • Android
      • Supports versions 2.3.3 (SDK level 10) to 12 (SDK level 32)
      • Supports Wear 5.1 (but not 5.0 due to missing permissions)
      • Supports Fire OS, CyanogenMod, and other heavily Android based distributions
      • root is not required for any current functionality
  • Remote control any device from your browser
    • Real-time screen view
      • Refresh speed can reach 30-40 FPS depending on specs and Android version. See minicap for more information.
      • Rotation support
    • Supports typing text from your own keyboard
      • Supports meta keys
      • Copy and paste support (although it can be a bit finicky on older devices, you may need to long-press and select paste manually)
      • May sometimes not work well with non-Latin languages unfortunately.
    • Multitouch support on touch screens via minitouch, two finger pinch/rotate/zoom gesture support on regular screens by pressing Alt while dragging
    • Drag & drop installation and launching of .apk files
      • Launches main launcher activity if specified in the manifest
    • Reverse port forwarding via minirev
      • Access your local server directly from the device, even if it's not on the same network
    • Open websites easily in any browser
      • Installed browsers are detected in real time and shown as selectable options
      • Default browser is detected automatically if selected by the user
    • Execute shell commands and see real-time output
    • Display and filter device logs
    • Use adb connect to connect to a remote device as if it was plugged in to your computer, regardless of ADB mode and whether you're connected to the same network
    • File Explorer to access device file system
    • Experimental VNC support (work in progress)
  • Monitor your device inventory
    • See which devices are connected, offline/unavailable (indicating a weak USB connection), unauthorized or unplugged
    • See who's using a device
    • Search devices by phone number, IMEI, ICCID, Android version, operator, product name, group name and/or many other attributes with easy but powerful queries
    • Show a bright red screen with identifying information on a device you need to locate physically
    • Track battery level and health
    • Rudimentary Play Store account management
      • List, remove and add new accounts (adding may not work on all devices)
    • Display hardware specs
  • Use the Booking & Partitioning systems
    • Overview
      • The partitioning system allow you [administrator level] to allocate distinct sets of devices to different projects or organizations (i.e. represented by user sets) for an unlimited period
      • The booking system allows you to reserve a set of devices for a set of users during a limited time (e.g. from 3:00 am to 4:00 am during 5 days)
      • What is common to the booking & partitioning systems is the concept of Group, that is, an association of devices, users and a specification of time
      • Report to GroupFeature.pdf for detailed documentation on how to use this feature
    • Monitor your group inventory
      • See which groups are active, ready or pending, as well as other group properties: name, identifier, owner, devices, users, class, duration, repetition, starting date, expiration date
      • Search groups by their property values
      • Contact by email the owners of the selected groups
    • Manage your groups
      • Create a group by specifying its name, devices, users and schedule
      • Get ready your group in order it is scheduled by the system
      • Search groups by their property values
      • Remove your group or a selection of your groups
      • Contact by email the owners of the selected groups [administrator level]
  • Manage the devices [administrator level]
    • Search the devices by their property values
    • Remove a device or a selection of devices meeting a set of filters: present, booked, annotated, controlled
  • Manage the users [administrator level]
    • Create a user by providing his name and his email
    • Search the users by their property values
    • Remove a user or a selection of users meeting a set of filters: group owner
    • Contact a user or a selection of users by email
    • Set the default groups quotas applicable to all users
    • Set the groups quotas applicable to a specific user
  • Simple REST API

Status

STF is in continued, active development, but development is still largely funded by individual team members and their unpaid free time, leading to slow progress. While normal for many open source projects, STF is quite heavy on the hardware side, and is therefore somewhat of a money sink.

We're also actively working to expand the team, don't be afraid to ask if you're interested.

Short term goals

Here are some things we are planning to address ASAP.

  1. Performance
  2. Properly expose the new VNC functionality in the UI
  3. Properly reset user data between uses (Android 4.0+)
  4. Automated scheduled restarts for devices

Long term goals

  1. iOS support

A quick note about security

As the product has evolved from an internal tool running in our internal network, we have made certain assumptions about the trustworthiness of our users. As such, there is little to no security or encryption between the different processes. Furthermore, devices do not get completely reset between uses, potentially leaving accounts logged in or exposing other sensitive data. This is not an issue for us, as all of our devices are test devices and are only used with test accounts, but it may be an issue for you if you plan on deploying STF to a multiuser environment. We welcome contributions in this area.

Requirements

Note that you need these dependencies even if you've installed STF directly from NPM, because they can't be included in the package.

On Mac OS, you can use homebrew to install most of the dependencies:

brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config cmake

On Windows you're on your own. In theory you might be able to get STF installed via Cygwin or similar, but we've never tried. In principle we will not provide any Windows installation support, but please do send a documentation pull request if you figure out what to do.

We also provide a Docker container in the Docker Hub as devicefarmer/stf. You can use our Dockerfile as guidance if you'd prefer to do the installation yourself. An example standalone docker-compose.yaml file is also provided.

You should now be ready to build or run STF.

Note that while Mac OS can be used for development, it doesn't provide a very reliable experience in production due to (presumed) bugs in ADB's Mac OS implementation. We use CoreOS but any Linux or BSD distribution should do fine.

Installation

As mentioned earlier, you must have all of the requirements installed first. Then you can simply install via NPM:

npm install -g @devicefarmer/stf

Now you're ready to run. For development, though, you should build instead.

Building

After you've got all the requirements installed, it's time to fetch the rest of the dependencies.

First, fetch all NPM and Bower modules:

npm install

You may also wish to link the module so that you'll be able to access the stf command directly from the command line:

npm link

You should now have a working installation for local development.

Running

STF comprises of several independent processes that must normally be launched separately. In our own setup each one these processes is its own systemd unit. See DEPLOYMENT.md and Setup Examples if you're interested.

For development purposes, however, there's a helper command to quickly launch all required processes along with a mock login implementation. Note that you must have RethinkDB running first.

If you don't have RethinkDB set up yet, to start it up, go to the folder where you'd like RethinkDB to create a rethinkdb_data folder in (perhaps the folder where this repo is) and run the following command:

rethinkdb

Note: if it takes a long time for RethinkDB to start up, you may be running into rethinkdb/rethinkdb#4600 (or rethinkdb/rethinkdb#6047). This usually happens on macOS Sierra. To fix this on macOS, first run scutil --get HostName to check if the HostName variable is unset. RethinkDB needs it to generate a server name for your instance. If you find that it's empty, running sudo scutil --set HostName $(hostname) has been confirmed to fix the issue on at least one occasion. See the issues for more complete solutions.

You should now have RethinkDB running locally. Running the command again in the same folder will reuse the data from the previous session.

An administrator level is available in STF in addition of the native user one, with increased rights on some features (e.g. booking & partitioning systems, management of users & devices, ...). The corresponding built-in administrator user has the following default credentials:

Another built-in object exists, this is the root standard group to which the users and devices belong the first time they register to the STF database, its default name is Common

These built-in objects are created in the STF database if they do not already exist

Of course, you can override the default values of these built-in objects by settings the following environment variables before to initialize the STF database through stf local or stf migrate commands:

  • root standard group name: STF_ROOT_GROUP_NAME
  • administrator user name: STF_ADMIN_NAME
  • administrator user email: STF_ADMIN_EMAIL

You're now ready to start up STF itself:

stf local

After the webpack build process has finished (which can take a small while) you should have your private STF running on http://localhost:7100. If you had devices connected before running the command, those devices should now be available for use. If not, you should see what went wrong from your console. Feel free to plug in or unplug any devices at any time.

Note that if you see your device ready to use but without a name or a proper image, we're probably missing the data for that model in our device database. Everything should work fine either way.

If you want to access STF from other machines, you can add the --public-ip option for quick testing.

stf local --public-ip <your_internal_network_ip_here>

Updating

To update your development version, simply pull the repo and run npm install again. You may occasionally have to remove the whole node_modules and res/bower_components folder to prevent NPM or Bower from complaining about version mismatches.

FAQ

Can I deploy STF to actual servers?

Yes, see DEPLOYMENT.md and Setup Examples.

Will I have to change battery packs all the time?

No, not all the time. Aside from a single early failure we had within only a few months, all of our devices were doing fine for about two years. However, having reached the 2-3 year mark, several devices have started to experience visibly expanded batteries. Expanded batteries should be replaced as soon as possible. Note that this issue isn't specific to STF, it's just what happens over time. You should be prepared to replace the batteries every now and then. In any case, we consider 2 years per battery pack to be fairly good value for a device lab.

You should set up your devices so that the display is allowed to turn off entirely after a short timeout. 30 seconds or so should do just fine, STF will wake it up when necessary. Otherwise you risk reducing the lifetime of your device.

Note that you may have a problem if your USB hubs are unable to both provide enough power for charging and support a data connection at the same time (data connections require power, too). This can cause a device to stop charging when being used, resulting in many charging cycles. If this happens you will just need to get a better USB hub.

Is the system secure?

It's possible to run the whole user-facing side behind HTTPS, but that's pretty much it. All internal communication between processes is insecure and unencrypted, which is a problem if you can eavesdrop on the network. See our quick note about security.

Can I just put the system online, put a few devices there and start selling it?

Yes and no. See "Is the system secure?". The system has been built in an environment where we are able to trust our users and be confident that they're not going to want to mess with others. In the current incarnation of the system a malicious user with knowledge of the inner workings will, for instance, be able to control any device at any time, whether it is being used by someone or not. Pull requests are welcome.

Once I've got the system running, can I pretty much leave it like that or is manual intervention required?

In our experience the system runs just fine most of the time, and any issues are mostly USB-related. You'll usually have to do something about once a week.

The most common issue is that a device will lose all of its active USB connections momentarily. You'll get errors in the logs but the worker process will either recover or get respawned, requiring no action on your side.

Below are the most common errors that do require manual intervention.

  • One device worker keeps getting respawned all the time
    • Rebooting the device usually helps. If the device stays online for long enough you might be able to do it from the UI. Otherwise you'll have to SSH into the server and run adb reboot manually.
    • This could be a sign that you're having USB problems, and the device wishes to be moved elsewhere. The less complex your setup is the fewer problems you're going to experience. See troubleshooting.
    • We're working on adding periodic automatic restarts and better graceful recovery to alleviate the issue.
  • A whole group of devices keeps dying at once
    • They're most likely connected to the same USB hub. Either the hub is bad or you have other compatibility issues. In our experience this usually happens with USB 3.0 hubs, or you may have a problem with your USB extension card. See recommended hardware.
  • A device that should be online is not showing up in the list or is showing up as disconnected

How do I uninstall STF from my device?

When you unplug your device, all STF utilities except STFService stop running automatically. It doesn't do any harm to force stop or uninstall it.

To uninstall the STFService, run the following command:

adb uninstall jp.co.cyberagent.stf

You may also wish to remove our support binaries, although as mentioned before they won't run unless the device is actually connected to STF. You can do this as follows:

adb shell rm /data/local/tmp/minicap \
  /data/local/tmp/minicap.so \
  /data/local/tmp/minitouch \
  /data/local/tmp/minirev

Your device is now clean.

Troubleshooting

I plugged in a new device but it's not showing up in the list.

There can be various reasons for this behavior. Some especially common reasons are:

  • USB debugging is not enabled
    • Enable it.
  • USB debugging is enabled but the USB connection mode is wrong
    • Try switching between MTP and PTP modes and see if the device appears. This happens fairly often on Mac OS but almost never on Linux.
  • You don't have the ADB daemon running
    • Make sure ADB is running with adb start-server.
  • You haven't authorized the ADB key yet
    • Check your device for an authentication dialog. You may need to unplug and then plug the device back in to see the dialog.
  • ADB hasn't whitelisted the manufacturer's vendor ID
    • Add it yourself or wait for the new version that removes the stupid whitelisting feature to be deployed.
  • Insufficient power supply
    • If you're using a USB hub, try a powered hub instead (one that comes with a separate AC adapter).
    • Even if you're using a powered hub, there might not actually be enough power for all ports simultaneously. Get a better hub or use fewer ports.
    • Your device is too power hungry, can happen with tablets. Get a better hub.
  • Insufficient USB host controller resources
    • On Linux, use dmesg to check for this error
    • If you've only got 9-12 devices connected and an Intel (Haswell) processor, it's most likely an issue with the processor. If your BIOS has an option to disable USB 3.0, that might help. If not, you're screwed and must get a PCIE extension card with onboard controllers.
  • Your powered USB hub does not support the device
  • The USB cable is bad
    • It happens. Try another one.
  • The USB hub is broken
    • This, too, happens. Just try a new one.
  • The device might not have a unique USB serial number, causing STF to overwrite the other device instead
    • This has never happened to us so far, but we do have one dirt-cheap Android 4.4 device whose serial number is the wonderfully unique "0123456789ABCDEF". Presumably if we had more than one unit we would have a problem.

A device that was previously connected no longer shows up in the list.

Again, there can be various reasons for this behavior as well. Some common reasons are:

  • The device ran out of power
    • You can see the last reported power level in the device list, unless there was a lengthy power outage preventing the battery level from being reported.
  • Someone accidentally disabled USB debugging remotely
    • Yes, it happens.
  • An OS update disabled USB debugging
    • Yes, it happens. Especially on Fire OS.
  • Someone touched the USB cable just the wrong way causing a disconnection
    • Happens easily.
  • Your PCIE USB extension card died
    • Yes, it happens.
  • Temporary network issues
    • Can't help with that.
  • Someone removed the device physically.
    • Or that.
  • You're on Mac OS
    • There's a bug in ADB's Mac OS implementation that causes devices to be lost on error conditions. The problem is more pronounced when using USB hubs. You have to unplug and then plug it back in again.
  • The USB hub broke
    • Happens. Just try a new one.

Remote debugging (i.e. adb connect) disconnects while I'm working.

If you're using STF locally, the most common cause is that you're not filtering the devices STF is allowed to connect to. The problem is that once you do adb connect, STF sees a new device and tries to set it up. Unfortunately since it's already connected via USB, setting up the new device causes the worker process handling the original USB device to fail. This is not a problem in production, since the devices should be connected to an entirely different machine anyway. For development it's a bit inconvenient. What you can do is give stf local a list of serials you wish to use. For example, if your device's serial is 0123456789ABCDEF, use stf local 0123456789ABCDEF. Now you can use adb connect and STF will ignore the new device.

There's another likely cause if you're running STF locally. Even if you whitelist devices by serial in STF, your IDE (e.g. Android Studio) doesn't know anything about that. From the IDE's point of view, you have two devices connected. When you try to run or debug your application, Android Studio suddenly notices that two devices are now providing JDWP connections and tries to connect to them both. This doesn't really work since the debugger will only allow one simultaneous connection, which causes problems with ADB. It then decides to disconnect the device (or sometimes itself) entirely.

One more sad possibility is that your Android Studio likes to restart ADB behind the scenes. Even if you restart ADB, USB devices will soon reappear as they're still connected. The same is not true for remote devices, as ADB never stores the list anywhere. This can sometimes also happen with the Android Device Monitor (monitor).

Recommended hardware

This is a list of components we are currently using and are proven to work.

PC components

These components are for the PC where the USB devices are connected. Our operating system of choice is CoreOS, but any other Linux or BSD distribution should do fine. Be sure to use reasonably recent kernels, though, as they often include improvements for the USB subsystem.

Our currently favorite build is as follows. It will be able to provide 28 devices using powered USB hubs, and about 10 more if you're willing to use the motherboard's USB ports, which is usually not recommended for stability reasons. Note that our component selection is somewhat limited by their availability in Japan.

Component Recommendation How many
PC case XIGMATEK Nebula x1
Motherboard ASUS H97I-PLUS x1
Processor Intel® Core™ i5-4460 x1
PSU Corsair CX Series™ Modular CX430M ATX Power Supply x1
Memory Your favorite DDR3 1600 MHz 8GB stick x1
SSD A-DATA Premier Pro SP900 64GB SSD x1
USB extension card StarTech.com 4 Port PCI Express (PCIe) SuperSpeed USB 3.0 Card Adapter w/ 4 Dedicated 5Gbps Channels - UASP - SATA / LP4 Power x1
USB hub Plugable USB 2.0 7 Port Hub with 60W Power Adapter x4
MicroUSB cable Monoprice.com 1.5ft USB 2.0 A Male to Micro 5pin Male 28/24AWG Cable w/ Ferrite Core (Gold Plated) x28

You may also need extension cords for power.

Alternatively, if you find that some of your older devices do not support the recommended hub, you may wish to mix the hub selection as follows:

Component Recommendation How many
USB hub Plugable USB 2.0 7 Port Hub with 60W Power Adapter x2
USB hub for older devices System TALKS USB2-HUB4XA-BK x2-4

You can connect up to two of the older hubs (providing up to 8 devices total) directly to the motherboard without exhausting USB host controller resources.

We also have several "budget builds" with an MSI AM1I motherboard and an AMD Athlon 5350 4-core processor. These builds, while significantly cheaper, sometimes completely lose the USB PCIE extension cards, and even a reboot will not always fix it. This may normally be fixable via BIOS USB settings, but unfortunately the budget motherboard has a complete lack of any useful options. Fortunately the AMD processor does not share Intel's Haswell USB host control resource problem, so you can also just connect your hubs to the motherboard directly if you don't mind sharing the root bus.

Below is an incomplete list of some of the components we have tried so far, including unsuitable ones.

Tested equipment

Note that our hardware score ratings only reflect their use for the purposes of this project, and are not an overall statement about the quality of the product.

USB extension cards
Name Score Short explanation
StarTech.com 4 Port PCI Express (PCIe) SuperSpeed USB 3.0 Card Adapter w/ 4 Dedicated 5Gbps Channels - UASP - SATA / LP4 Power 9/10 Reliable, well supported chipset and good power connections
StarTech.com 4 Independent Port PCI Express USB 2.0 Adapter Card 8/10 Reliable
玄人志向 USB3.0RX4-P4-PCIE 4/10 Well supported chipset but breaks VERY easily

Our current recommendation is StarTech.com's PEXUSB3S44V. It provides an independent Renesas (allegedly Linux-friendliest) µPD720202 host controller for each port. Another option from the same maker is PEXUSB400, which also works great but may offer slightly less future proofing.

Our 玄人志向 USB3.0RX4-P4-PCIE cards have been nothing but trouble and we've mostly phased them out by now. Chipset-wise it's pretty much the same thing as StarTech's offering, but the SATA power connector is awfully flimsy and can actually physically break off. The card is also incredibly sensitive to static electricity and will permanently brick itself, which happened on numerous occasions.

USB hubs
Name Score Short explanation
Plugable USB 2.0 7 Port Hub with 60W Power Adapter 8/10 High power output, high reliability
Plugable USB 3.0 7-port Charging Hub with 60W Power Adapter 5/10 High power output, low reliability
System TALKS USB2-HUB4XA-BK USB 2.0 hub with power adapter 7/10 High power output on two ports which complicates device positioning, low port count
Anker USB 3.0 9-Port Hub + 5V 2.1A Charging Port 2/10 High port count, insufficient power
ORICO P10-U2 External ABS 10 Port 2.0 USB HUB for Laptop/Desktop-BLACK 3/10 High port count, insufficient power
ORICO BH4-U3-BK ABS 4 Port USB3.0 BC1.2 Charging HUB with 12V3A Power Adapter-BLACK 5/10 High power output, low reliability

The best hub we've found so far is Plugable's USB 2.0 7 Port Hub with 60W Power Adapter. It's able to provide 1.5A per port for Battery Charging spec compliant devices, which is enough to both charge and sync even tablets (although charging will not occur at maximum speed, but that's irrelevant to us). Note that even devices that are not compliant will usually charge and sync just fine, albeit slower. The more recent USB 3.0 version has proven unreliable with the rest of our components, causing the whole hub to disconnect at times. Annoyingly the ports face the opposite direction, too. Note that ORICO also provides hubs that are identical to Plugable's offerings, the latter of which seem to be rebrands.

Unfortunately Plugable's USB 2.0 hub is not perfect either, at least for our purposes. It includes a physical on/off switch which can be especially annoying if your devices are in a regular office with occasional scheduled power outages. This will shut down the PC too, of course, but the problem is that once power comes back online, the hubs will be unable to switch themselves on and the devices won't charge, leading you to find a bunch of dead devices the next Monday.

The System TALKS USB 2.0 hub is very reliable, but has a few annoying drawbacks. First, the power adapter only provides power to two of its four ports, while the other two are powered by the host PC. The problem with this approach is that you must figure out which devices are power hungry yourself and put them on the ports with higher current. This can complicate device setup/positioning quite a bit. Another drawback is that if the host PC is turned off, only the powered ports will keep charging the connected devices. However, the hub is amazingly compatible with pretty much anything, making it the top choice for older devices that do not support the Battery Charging hubs.

Most powered USB 3.0 hubs we've tested have had a serious problem: the whole hub occasionally disconnected. This may have been caused by the specific combination of our components and/or OS, but as of yet we don't really know. Disabling USB 3.0 may help if you run into the same problem.

Translating

Currently STF UI is available in English and Japanese.

If you would like translate to any other language, please contribute in the STF Transifex project.

For updating the source and all the translation files first you have to install the Transifex client.

Then just run:

gulp translate

It will do the following:

  1. Convert all the jade files to html.
  2. Extract with gettext all translatable strings to stf.pot.
  3. Push stf.pot to Transifex.
  4. Pull from Transifex all po translations.
  5. Compile all po files to json.

Then in order to add it officially (only needs to be done once):

  1. Add the language to res/common/lang/langs.json.
  2. Pull the specific language tx pull -l <lang>.
  3. Run gulp translate.

Testing

See TESTING.md.

Contributing

See CONTRIBUTING.md.

History

Project was previously developed as OpenSTF and supported by CyberAgent, HeadSpin and other individual contributors.

See Credits for more details.

DeviceFarmer vs OpenSTF FAQ

What exactly has changed?

  1. Organisation on GitHub to DeviceFarmer
  2. Organisation on DockerHub to devicefarmer
  3. Package coordinates on npmjs are now under @devicefarmer scope

How to migrate?

It depends on how you are using STF. One or more of those changes may be needed:

  • change Docker image coordinates eg. docker pull openstf/stf to docker pull devicefarmer/stf
  • change npmjs package coordinates eg. npm install -g stf to npm install -g @devicefarmer/stf

Will version OpenSTF 3.4.2 be published to npmjs?

No. Exceptionally, on npmjs the last OpenSTF version is 3.4.1.

What about sponsorship?

DeviceFarmer team have no access to OpenSTF donations collected using Open Collective. At the time of writing DeviceFarmer do not collect any donations.

License

See LICENSE.

Copyright © 2017 The OpenSTF Project. All Rights Reserved.

Project is a part of OW2 consortium.

stf's People

Contributors

0rzech avatar aberoham avatar att55 avatar bananayong avatar chibamap avatar codeskyblue avatar denis99999 avatar dependabot-preview[bot] avatar dependabot[bot] avatar gebitang avatar greenkeeperio-bot avatar gunta avatar horochx avatar im-0 avatar jupe avatar koral-- avatar kwv avatar lenciel avatar lukzeg avatar mirceanis avatar mitchtech avatar nghiaviminh avatar pcrepieux avatar petemyron avatar skyline-gleb avatar sorccu avatar thasegaw avatar thinkhy avatar vbanthia avatar xu-duqing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stf's Issues

Problem with setup environment on Windows 10 using docker

Steps for reproduce

  1. Download the following images:
  • docker pull devicefarmer/stf:latest
  • docker pull devicefarmer/adb
  • docker pull rethinkdb:latest
  1. Running those images by the following commands:
  • docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
  • docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host devicefarmer/adb:latest
  • docker run -d --name stf --net host devicefarmer/stf stf local
  1. I try to open the page: http://localhost:7100 but does not work

When I did the same steps using also Docker but in Ubuntu 20.04 the page is loading correctly

What I'm doing wrong in Windows 10 using Docker ?

Below I attached the screenshots from Windows 10
image

image
image

Result: Page is not loading
image

Upgrade from openstf/stf to devicefarmer/stf breaks screen

What is the issue or idea you have?

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.

Please provide the steps to reproduce the issue.

What is the expected behavior?

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

Please run stf doctor and paste the output here.

STF keep on trying to find for minicap.so file for android 11

What is the issue or idea you have?
STF keep on trying to find for minicap.so file for android 11 devices. But minicap doesn't support the Androdi 11 yet. Due to this, sometimes stf is not working properly

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.
yes Only on Android 11 (R) devices

Please provide the steps to reproduce the issue.
Connect Android R device & check

What is the expected behavior?
It should stop the minicap.so finding/pushing after trying few times. After that it has to ignore that device & it should show as either disconnected/setup error in device list

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

2020-07-30T09:02:29.639Z FTL/util:lifecycle 17530 [R38MB0AHCRN] Shutting down due to fatal error
2020-07-30T09:02:29.654Z INF/provider 8400 [*] Cleaning up device worker "R38MB0AHCRN"
2020-07-30T09:02:29.654Z ERR/provider 8400 [*] Device worker "R38MB0AHCRN" died with code 1
2020-07-30T09:02:29.654Z INF/provider 8400 [*] Restarting device worker "R38MB0AHCRN"
^[[B^[[B^[[B2020-07-30T09:02:30.625Z INF/device:support:push 17744 [R38MB0AHCRN] Sending output to "tcp://127.0.0.1:7116"
2020-07-30T09:02:30.632Z INF/device 17744 [R38MB0AHCRN] Preparing device
^[[B^[[B^[[B^[[B^[[B^[[B2020-07-30T09:02:31.246Z INF/device:support:sub 17744 [R38MB0AHCRN] Receiving input from "tcp://127.0.0.1:7114"
2020-07-30T09:02:31.248Z INF/device:support:sub 17744 [R38MB0AHCRN] Subscribing to permanent channel "*ALL"
^[[B^[[B^[[B^[[B^[[B^[[B2020-07-30T09:02:31.321Z INF/device:support:properties 17744 [R38MB0AHCRN] Loading properties
2020-07-30T09:02:31.371Z INF/device:support:sdk 17744 [R38MB0AHCRN] Supports SDK 30
2020-07-30T09:02:31.372Z INF/device:support:abi 17744 [R38MB0AHCRN] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
2020-07-30T09:02:31.375Z FTL/device 17744 [R38MB0AHCRN] Setup had an error Error: At least one of these paths should exist: /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so
    at Object.module.exports.requiredMatch (/home/bob/workspace/STF/lib/util/pathutil.js:33:9)
    at /home/bob/workspace/STF/lib/units/device/resources/minicap.js:41:23
    at SerialSyrup.ParallelSyrup.invoke (/home/bob/workspace/STF/node_modules/stf-syrup/lib/parallel.js:54:24)
    at /home/bob/workspace/STF/node_modules/stf-syrup/lib/serial.js:43:33
    at tryCatch1 (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/util.js:63:19)
    at Promise$_callHandler [as _callHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:708:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:724:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:896:14)
    at Promise$_fulfillPromises [as _fulfillPromises] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:1041:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:74:12)
    at Async$consumeFunctionBuffer (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:37:14)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickCallback (internal/process/next_tick.js:181:9)
2020-07-30T09:02:31.376Z FTL/util:lifecycle 17744 [R38MB0AHCRN] Shutting down due to fatal error
2020-07-30T09:02:31.386Z INF/provider 8400 [*] Cleaning up device worker "R38MB0AHCRN"
2020-07-30T09:02:31.386Z ERR/provider 8400 [*] Device worker "R38MB0AHCRN" died with code 1
2020-07-30T09:02:31.386Z INF/provider 8400 [*] Restarting device worker "R38MB0AHCRN"
^[[B^[[B^[[B2020-07-30T09:02:32.300Z INF/device:support:push 17758 [R38MB0AHCRN] Sending output to "tcp://127.0.0.1:7116"
2020-07-30T09:02:32.305Z INF/device 17758 [R38MB0AHCRN] Preparing device
^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B2020-07-30T09:02:32.946Z INF/device:support:sub 17758 [R38MB0AHCRN] Receiving input from "tcp://127.0.0.1:7114"
2020-07-30T09:02:32.948Z INF/device:support:sub 17758 [R38MB0AHCRN] Subscribing to permanent channel "*ALL"
2020-07-30T09:02:33.017Z INF/device:support:properties 17758 [R38MB0AHCRN] Loading properties
2020-07-30T09:02:33.064Z INF/device:support:sdk 17758 [R38MB0AHCRN] Supports SDK 30
2020-07-30T09:02:33.065Z INF/device:support:abi 17758 [R38MB0AHCRN] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
2020-07-30T09:02:33.068Z FTL/device 17758 [R38MB0AHCRN] Setup had an error Error: At least one of these paths should exist: /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so
    at Object.module.exports.requiredMatch (/home/bob/workspace/STF/lib/util/pathutil.js:33:9)
    at /home/bob/workspace/STF/lib/units/device/resources/minicap.js:41:23
    at SerialSyrup.ParallelSyrup.invoke (/home/bob/workspace/STF/node_modules/stf-syrup/lib/parallel.js:54:24)
    at /home/bob/workspace/STF/node_modules/stf-syrup/lib/serial.js:43:33
    at tryCatch1 (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/util.js:63:19)
    at Promise$_callHandler [as _callHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:708:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:724:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:896:14)
    at Promise$_fulfillPromises [as _fulfillPromises] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:1041:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:74:12)
    at Async$consumeFunctionBuffer (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:37:14)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickCallback (internal/process/next_tick.js:181:9)
2020-07-30T09:02:33.070Z FTL/util:lifecycle 17758 [R38MB0AHCRN] Shutting down due to fatal error
2020-07-30T09:02:33.079Z INF/provider 8400 [*] Cleaning up device worker "R38MB0AHCRN"
2020-07-30T09:02:33.079Z ERR/provider 8400 [*] Device worker "R38MB0AHCRN" died with code 1
2020-07-30T09:02:33.080Z INF/provider 8400 [*] Restarting device worker "R38MB0AHCRN"
^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B^[[B2020-07-30T09:02:34.050Z INF/device:support:push 17778 [R38MB0AHCRN] Sending output to "tcp://127.0.0.1:7116"
2020-07-30T09:02:34.056Z INF/device 17778 [R38MB0AHCRN] Preparing device
2020-07-30T09:02:34.640Z INF/device:support:sub 17778 [R38MB0AHCRN] Receiving input from "tcp://127.0.0.1:7114"
2020-07-30T09:02:34.642Z INF/device:support:sub 17778 [R38MB0AHCRN] Subscribing to permanent channel "*ALL"
2020-07-30T09:02:34.711Z INF/device:support:properties 17778 [R38MB0AHCRN] Loading properties
2020-07-30T09:02:34.753Z INF/device:support:sdk 17778 [R38MB0AHCRN] Supports SDK 30
2020-07-30T09:02:34.754Z INF/device:support:abi 17778 [R38MB0AHCRN] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
2020-07-30T09:02:34.757Z FTL/device 17778 [R38MB0AHCRN] Setup had an error Error: At least one of these paths should exist: /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so
    at Object.module.exports.requiredMatch (/home/bob/workspace/STF/lib/util/pathutil.js:33:9)
    at /home/bob/workspace/STF/lib/units/device/resources/minicap.js:41:23
    at SerialSyrup.ParallelSyrup.invoke (/home/bob/workspace/STF/node_modules/stf-syrup/lib/parallel.js:54:24)
    at /home/bob/workspace/STF/node_modules/stf-syrup/lib/serial.js:43:33
    at tryCatch1 (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/util.js:63:19)
    at Promise$_callHandler [as _callHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:708:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:724:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:896:14)
    at Promise$_fulfillPromises [as _fulfillPromises] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:1041:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:74:12)
    at Async$consumeFunctionBuffer (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:37:14)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickCallback (internal/process/next_tick.js:181:9)
2020-07-30T09:02:34.758Z FTL/util:lifecycle 17778 [R38MB0AHCRN] Shutting down due to fatal error
2020-07-30T09:02:34.766Z INF/provider 8400 [*] Cleaning up device worker "R38MB0AHCRN"
2020-07-30T09:02:34.766Z ERR/provider 8400 [*] Device worker "R38MB0AHCRN" died with code 1
2020-07-30T09:02:34.767Z INF/provider 8400 [*] Restarting device worker "R38MB0AHCRN"
2020-07-30T09:02:35.696Z INF/device:support:push 17798 [R38MB0AHCRN] Sending output to "tcp://127.0.0.1:7116"
2020-07-30T09:02:35.701Z INF/device 17798 [R38MB0AHCRN] Preparing device
2020-07-30T09:02:36.337Z INF/device:support:sub 17798 [R38MB0AHCRN] Receiving input from "tcp://127.0.0.1:7114"
2020-07-30T09:02:36.338Z INF/device:support:sub 17798 [R38MB0AHCRN] Subscribing to permanent channel "*ALL"
2020-07-30T09:02:36.405Z INF/device:support:properties 17798 [R38MB0AHCRN] Loading properties
2020-07-30T09:02:36.451Z INF/device:support:sdk 17798 [R38MB0AHCRN] Supports SDK 30
2020-07-30T09:02:36.452Z INF/device:support:abi 17798 [R38MB0AHCRN] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
2020-07-30T09:02:36.455Z FTL/device 17798 [R38MB0AHCRN] Setup had an error Error: At least one of these paths should exist: /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi-v7a/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so, /home/bob/workspace/STF/node_modules/minicap-prebuilt-beta/prebuilt/armeabi/lib/android-30/minicap.so
    at Object.module.exports.requiredMatch (/home/bob/workspace/STF/lib/util/pathutil.js:33:9)
    at /home/bob/workspace/STF/lib/units/device/resources/minicap.js:41:23
    at SerialSyrup.ParallelSyrup.invoke (/home/bob/workspace/STF/node_modules/stf-syrup/lib/parallel.js:54:24)
    at /home/bob/workspace/STF/node_modules/stf-syrup/lib/serial.js:43:33
    at tryCatch1 (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/util.js:63:19)
    at Promise$_callHandler [as _callHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:708:13)
    at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:724:18)
    at Promise$_settlePromiseAt [as _settlePromiseAt] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:896:14)
    at Promise$_fulfillPromises [as _fulfillPromises] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/promise.js:1041:14)
    at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:74:12)
    at Async$consumeFunctionBuffer (/home/bob/workspace/STF/node_modules/stf-syrup/node_modules/bluebird/js/main/async.js:37:14)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickCallback (internal/process/next_tick.js:181:9)
2020-07-30T09:02:36.457Z FTL/util:lifecycle 17798 [R38MB0AHCRN] Shutting down due to fatal error
2020-07-30T09:02:36.465Z INF/provider 8400 [*] Cleaning up device worker "R38MB0AHCRN"
2020-07-30T09:02:36.465Z ERR/provider 8400 [*] Device worker "R38MB0AHCRN" died with code 1
2020-07-30T09:02:36.465Z INF/provider 8400 [*] Restarting device worker "R38MB0AHCRN"

Please run stf doctor and paste the output here.

2020-07-30T09:28:45.340Z INF/cli:doctor 1640 [*] OS Arch: x64
2020-07-30T09:28:45.343Z INF/cli:doctor 1640 [*] OS Platform: linux
2020-07-30T09:28:45.343Z INF/cli:doctor 1640 [*] OS Platform: 4.4.0-174-generic
2020-07-30T09:28:45.343Z INF/cli:doctor 1640 [*] Using Node 8.16.1
2020-07-30T09:28:45.396Z INF/cli:doctor 1640 [*] Using ZeroMQ 4.1.4
2020-07-30T09:28:45.417Z ERR/cli:doctor 1640 [*] ProtoBuf is not installed (`protoc` is missing)
2020-07-30T09:28:45.419Z INF/cli:doctor 1640 [*] Using ADB 1.0.41
2020-07-30T09:28:46.226Z INF/cli:doctor 1640 [*] Using GraphicsMagick 1.3.23
2020-07-30T09:28:46.264Z INF/cli:doctor 1640 [*] Using RethinkDB 2.4.0~0xenial

npm install command failling

What is the issue or idea you have?

running npm i @devicefarmer/stf returns an error

It seems that there this an issue with [email protected]. I searched for this version but couldn't find it in npmjs nor in github, the latest version seems to be 0.4.0

Logs

> @devicefarmer/[email protected] install /usr/local/lib/node_modules/@devicefarmer/stf/node_modules/@devicefarmer/jpeg-turbo
> node ./prebuilt-bindings install

[prebuilt-bindings] => Testing '/usr/local/lib/node_modules/@devicefarmer/stf/node_modules/@devicefarmer/jpeg-turbo/build/Release/jpegturbo.node'...
[prebuilt-bindings] => Binding not found or incompatible
[prebuilt-bindings] => Downloading 'https://github.com/sorccu/node-jpeg-turbo/releases/download/v0.4.1/jpegturbo-83-darwin-x64.node.gz'...
[prebuilt-bindings] => Server responded with '404 Not Found'
[prebuilt-bindings] => Downloading 'https://github.com/sorccu/node-jpeg-turbo/releases/download/v0.4.1/jpegturbo-83-darwin-x64.node'...
[prebuilt-bindings] => Server responded with '404 Not Found'
[prebuilt-bindings] => Unable to download prebuilt bindings: No compatible bindings found
[prebuilt-bindings] => Building from source...
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.

gyp: No Xcode or CLT version detected!
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)
gyp ERR! stack     at ChildProcess.emit (events.js:314:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Darwin 19.6.0
gyp ERR! command "/usr/local/Cellar/node/14.5.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/@devicefarmer/stf/node_modules/@devicefarmer/jpeg-turbo
gyp ERR! node -v v14.5.0
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok 
Usage: prebuilt-bindings [command...] [options]

Commands:
  build     Builds bindings locally.
  clean     Removes installed bindings.
  config    Prints out the resolved config. Can be useful to understand what
            prebuilt-bindings sees.
  install   Installs prebuilt bindings or builds them if none can be found.
            Default command if none is given.
  pack      Packs configured bindings into properly named individual archives
            for easy deployment.

Options:
  --no-download   Don't download prebuilt bindings. (PREBUILT_BINDINGS=0)
  --no-build      Don't build if prebuilt bindings can't be found.
  -h, --help      Show usage.

Error: node-gyp failed with status 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @devicefarmer/[email protected] install: `node ./prebuilt-bindings install`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @devicefarmer/[email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:

Let me know if you need the complete log file

Can OpenSTF run on two interfaces?

What is the issue or idea you have?
No issue at all, OpenSTF is running great.

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.

Please provide the steps to reproduce the issue.

What is the expected behavior?
I want to know if it possible to run OpenSTF service on both interfaces of the server. For example LAN interface and VPN interface.
I want to run the OpenSTF on local network with LAN interface IP and also want to provide access of OpenSTF to VPN server site with VPN IP.

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

Please run stf doctor and paste the output here.

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating express-validator in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating exports-loader in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating karma in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Question - running python script does not work

When my phone is connected to stf my script throw time out exception, but work well when the device is directly connected to my laptop.
Can some one help me to understand why ?
Thanks

Failed to ''Setup had an error Error: Cannot find module '@devicefarmer/jpeg-turbo''' by using docker-compose

Log as below:

android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.073Z INF/provider 1 [] Tracking devices
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.105Z INF/provider 1 [
] Found device "35fbffe7" (device)
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.109Z INF/provider 1 [] Found device "5DQOWSB6AQTK79C6" (device)
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.121Z INF/provider 1 [
] Registered device "35fbffe7"
reaper_1_973795d269b5 | 2020-08-20T01:19:58.121Z INF/reaper 1 [dev] Device "35fbffe7" is present
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.144Z INF/provider 1 [] Registered device "5DQOWSB6AQTK79C6"
reaper_1_973795d269b5 | 2020-08-20T01:19:58.145Z INF/reaper 1 [dev] Device "5DQOWSB6AQTK79C6" is present
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.556Z INF/device:support:push 13 [35fbffe7] Sending output to "tcp://dev-triproxy:7270"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.560Z INF/device 13 [35fbffe7] Preparing device
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.563Z INF/device:support:push 19 [5DQOWSB6AQTK79C6] Sending output to "tcp://dev-triproxy:7270"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.568Z INF/device 19 [5DQOWSB6AQTK79C6] Preparing device
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.942Z FTL/device 13 [35fbffe7] Setup had an error Error: Cannot find module '@devicefarmer/jpeg-turbo'
android-provider2_1_9f78623d87eb | at Function.Module._resolveFilename (module.js:548:15)
android-provider2_1_9f78623d87eb | at Function.Module._load (module.js:475:25)
android-provider2_1_9f78623d87eb | at Module.require (module.js:597:17)
android-provider2_1_9f78623d87eb | at require (internal/module.js:11:18)
android-provider2_1_9f78623d87eb | at Object. (/app/lib/units/device/plugins/vnc/index.js:8:12)
android-provider2_1_9f78623d87eb | at Module._compile (module.js:653:30)
android-provider2_1_9f78623d87eb | at Object.Module._extensions..js (module.js:664:10)
android-provider2_1_9f78623d87eb | at Module.load (module.js:566:32)
android-provider2_1_9f78623d87eb | at tryModuleLoad (module.js:506:12)
android-provider2_1_9f78623d87eb | at Function.Module._load (module.js:498:3)
android-provider2_1_9f78623d87eb | at Module.require (module.js:597:17)
android-provider2_1_9f78623d87eb | at require (internal/module.js:11:18)
android-provider2_1_9f78623d87eb | at /app/lib/units/device/index.js:23:21
android-provider2_1_9f78623d87eb | at SerialSyrup.ParallelSyrup.invoke (/app/node_modules/@devicefarmer/stf-syrup/lib/parallel.js:54:24)
android-provider2_1_9f78623d87eb | at /app/node_modules/@devicefarmer/stf-syrup/lib/serial.js:43:33
android-provider2_1_9f78623d87eb | at tryCatch1 (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/util.js:63:19)
android-provider2_1_9f78623d87eb | at Promise$_callHandler [as _callHandler] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:708:13)
android-provider2_1_9f78623d87eb | at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:724:18)
android-provider2_1_9f78623d87eb | at Promise$_settlePromiseAt [as _settlePromiseAt] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:896:14)
android-provider2_1_9f78623d87eb | at Promise$_fulfillPromises [as _fulfillPromises] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:1041:14)
android-provider2_1_9f78623d87eb | at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/async.js:74:12)
android-provider2_1_9f78623d87eb | at Async$consumeFunctionBuffer (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/async.js:37:14)
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.943Z FTL/device 19 [5DQOWSB6AQTK79C6] Setup had an error Error: Cannot find module '@devicefarmer/jpeg-turbo'
android-provider2_1_9f78623d87eb | at Function.Module._resolveFilename (module.js:548:15)
android-provider2_1_9f78623d87eb | at Function.Module._load (module.js:475:25)
android-provider2_1_9f78623d87eb | at Module.require (module.js:597:17)
android-provider2_1_9f78623d87eb | at require (internal/module.js:11:18)
android-provider2_1_9f78623d87eb | at Object. (/app/lib/units/device/plugins/vnc/index.js:8:12)
android-provider2_1_9f78623d87eb | at Module._compile (module.js:653:30)
android-provider2_1_9f78623d87eb | at Object.Module._extensions..js (module.js:664:10)
android-provider2_1_9f78623d87eb | at Module.load (module.js:566:32)
android-provider2_1_9f78623d87eb | at tryModuleLoad (module.js:506:12)
android-provider2_1_9f78623d87eb | at Function.Module._load (module.js:498:3)
android-provider2_1_9f78623d87eb | at Module.require (module.js:597:17)
android-provider2_1_9f78623d87eb | at require (internal/module.js:11:18)
android-provider2_1_9f78623d87eb | at /app/lib/units/device/index.js:23:21
android-provider2_1_9f78623d87eb | at SerialSyrup.ParallelSyrup.invoke (/app/node_modules/@devicefarmer/stf-syrup/lib/parallel.js:54:24)
android-provider2_1_9f78623d87eb | at /app/node_modules/@devicefarmer/stf-syrup/lib/serial.js:43:33
android-provider2_1_9f78623d87eb | at tryCatch1 (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/util.js:63:19)
android-provider2_1_9f78623d87eb | at Promise$_callHandler [as _callHandler] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:708:13)
android-provider2_1_9f78623d87eb | at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:724:18)
android-provider2_1_9f78623d87eb | at Promise$_settlePromiseAt [as _settlePromiseAt] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:896:14)
android-provider2_1_9f78623d87eb | at Promise$_fulfillPromises [as _fulfillPromises] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/promise.js:1041:14)
android-provider2_1_9f78623d87eb | at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/async.js:74:12)
android-provider2_1_9f78623d87eb | at Async$consumeFunctionBuffer (/app/node_modules/@devicefarmer/stf-syrup/node_modules/bluebird/js/main/async.js:37:14)
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.943Z FTL/util:lifecycle 19 [5DQOWSB6AQTK79C6] Shutting down due to fatal error
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.948Z FTL/util:lifecycle 13 [35fbffe7] Shutting down due to fatal error
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.957Z INF/provider 1 [
] Cleaning up device worker "5DQOWSB6AQTK79C6"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.958Z ERR/provider 1 [] Device worker "5DQOWSB6AQTK79C6" died with code 1
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.958Z INF/provider 1 [
] Restarting device worker "5DQOWSB6AQTK79C6"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.959Z INF/provider 1 [] Cleaning up device worker "35fbffe7"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.959Z ERR/provider 1 [
] Device worker "35fbffe7" died with code 1
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:58.959Z INF/provider 1 [*] Restarting device worker "35fbffe7"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:59.766Z INF/device:support:push 30 [35fbffe7] Sending output to "tcp://dev-triproxy:7270"
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:59.769Z INF/device 30 [35fbffe7] Preparing device
android-provider2_1_9f78623d87eb | 2020-08-20T01:19:59.768Z INF/device:support:push 29 [5DQOWSB6AQTK79C6] Sending output to "tcp://dev-triproxy:7270"

Upload files to phone storage

Is your feature request related to a problem? Please describe.
When I want to upload a file to the phone storage, I can only upload it through some other methods, and I cannot directly upload the file to the phone storage through STF.
Describe the solution you'd like
I hope there is a way to upload files to phone storage like installing APK package
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
I tried to upload apk to achieve this function, but I failed to do it, I hope someone can achieve this function

WSS issues using Multiple servers via Docker

I am having trouble with device video feeds from an Android provider. The device control commands are working on the device, but no screen images are loaded. I have looked through the web browser console, I am seeing issues with a 404 error for Object20%Module. Previously, I was seeing some 'WSS connection error' messages, but was able to make those stop by adding the --screen-ws-url-pattern command to the docker container for the provider. I'm sure this this is something simple, but after spending days on this and searching the forums, I am still not having any luck.

The provider I am trying to use is a Pi4, so I am using gounthar/stf-armhf:latest for the docker container. To eliminate this as the culprit, I have also tried building STF using NPM on a Mac, with the same results.

Provider Docker container:

sudo docker run -d \ --net host \ --name stf-provider gounthar/stf-armhf:latest \ stf provider \ --name mdsadb1 \ --connect-sub tcp://10.105.10.116:7250 \ --connect-push tcp://10.105.10.116:7270 \ --storage-url https://10.105.10.116:8080/ \ --public-ip 10.105.20.115 \ --min-port=15000 \ --max-port=25000 \ --heartbeat-interval 10000 \ --screen-ws-url-pattern "wss://devices.domain.com/d/mdsadb1/<%= serial %>/<%= publicPort %>/"

nginx.conf.txt

Integration with Bugtrackers to easily create issues from screenshots

Is your feature request related to a problem? Please describe.
Currently it's quite hard to report issues from stf, as far as I know.

Describe the solution you'd like
The most simple way to achieve this, would be a feature, which allows sending the screenshot via e-mail. This would allow everyone to integrate their bugtracker. GitLab already supports creating issues via e-mail. Other bugtrackers might too and if not they can be easily integrated via zapier, integromat etc.

Bonus points
...for adding a simple drawing tool, so that you can mark things on the screenshot, this wouldn't be a requirement for a first version though.
...if you include the device-description in the e-mail, so that the issue includes a description of the phone on which the bug appeared

Additional context
Browserstack includes this feature. It's one of the most used feature by us and it saves us a lot of time...

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating semver in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating sinon in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

STF distributed deployment,device always waiting for...

Hi,
I have a problem in a distributed deployment。

Next is my deployment environment:
master:192.168.8.132 linux centos7
branch:192.168.8.131 docker

Both Master and Branch start STF separately and can run perfectly

But I start the command "stf provider --name openstf --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 192.168.8.132 --storage-url http://localhost:7100/ --adb-host 192.168.8.131 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote" at Master ,

2020-08-27T09:40:33.363Z FTL/util:lifecycle 31439 [P7CDU17B25004336] Shutting down due to fatal error
2020-08-27T09:40:33.386Z INF/provider 31393 [] Cleaning up device worker "P7CDU17B25004336"
2020-08-27T09:40:33.388Z ERR/provider 31393 [
] Device worker "P7CDU17B25004336" died with code 1
2020-08-27T09:40:33.388Z INF/provider 31393 [] Restarting device worker "P7CDU17B25004336"
2020-08-27T09:40:34.107Z INF/device:support:push 31451 [P7CDU17B25004336] Sending output to "tcp://127.0.0.1:7116"
2020-08-27T09:40:34.110Z INF/device 31451 [P7CDU17B25004336] Preparing device
2020-08-27T09:40:34.382Z INF/device:support:sub 31451 [P7CDU17B25004336] Receiving input from "tcp://127.0.0.1:7114"
2020-08-27T09:40:34.383Z INF/device:support:sub 31451 [P7CDU17B25004336] Subscribing to permanent channel "ALL"
2020-08-27T09:40:35.388Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:36.389Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:37.062Z INF/provider 31393 [
] Providing 0 of 1 device(s); waiting for "P7CDU17B25004336"
2020-08-27T09:40:37.391Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:38.393Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:39.394Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:40.397Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:41.399Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:42.412Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:43.437Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:44.412Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:45.414Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:46.415Z INF/device:support:adb 31451 [P7CDU17B25004336] Waiting for boot to complete
2020-08-27T09:40:47.072Z INF/provider 31393 [
] Providing 0 of 1 device(s); waiting for "P7CDU17B25004336"

Please tell me how to fix,thanks!

error: no matching function for call to ‘v8::Value::Uint32Value()

OS: Ubuntu 20.04
Source: master

2020-07-20T06_30_39_111Z-debug.log

/home/ken/.cache/node-gyp/12.18.2/include/node/v8.h:2707:41: note: candidate: ‘v8::Maybe<unsigned[41/358$
::Value::Uint32Value(v8::Local<v8::Context>) const’                                                      
 2707 |   V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(                                             
      |                                         ^~~~~~~~~~~                                              
/home/ken/.cache/node-gyp/12.18.2/include/node/v8.h:2707:41: note:   candidate expects 1 argument, 0 prov
ided                                                                                                     
../src/buffersize.cc:86:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*
) const’ is deprecated [-Wdeprecated-declarations]                                                       
   86 |     callback->Call(2, argv);                                                                     
      |                           ^                                                                      
In file included from ../src/exports.h:4,                                                                
                 from ../src/buffersize.cc:1:                                                            
../../../nan/nan.h:1742:3: note: declared here                                                           
 1742 |   Call(int argc, v8::Local<v8::Value> argv[]) const {                                            
      |   ^~~~                                                                                           
../src/buffersize.cc:102:29: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>
*) const’ is deprecated [-Wdeprecated-declarations]                                                      
  102 |       callback->Call(1, argv);                                                                   
      |                             ^                                                                    
In file included from ../src/exports.h:4,                                                                
                 from ../src/buffersize.cc:1:                                                            
../../../nan/nan.h:1742:3: note: declared here                                                           
 1742 |   Call(int argc, v8::Local<v8::Value> argv[]) const {                                            
      |   ^~~~                                                                                           
In file included from ../src/buffersize.cc:1:                                                            
../src/exports.h: At global scope:                                                                       
../src/exports.h:18:12: warning: ‘NJT_DEFAULT_FORMAT’ defined but not used [-Wunused-variable]           
   18 | static int NJT_DEFAULT_FORMAT = TJPF_RGBA;                                                       
      |            ^~~~~~~~~~~~~~~~~~                                                                    
../src/exports.h:16:12: warning: ‘NJT_DEFAULT_QUALITY’ defined but not used [-Wunused-variable]          
   16 | static int NJT_DEFAULT_QUALITY = 80;                                                             
      |            ^~~~~~~~~~~~~~~~~~~                                                                   
make: *** [jpegturbo.target.mk:119: Release/obj.target/jpegturbo/src/buffersize.o] Error 1               
make: Leaving directory '/home/ken/Documents/learn/stf-test/stf/node_modules/@devicefarmer/jpeg-turbo/bui
ld'                                                                                                      
gyp ERR! build error                                                                                     
gyp ERR! stack Error: `make` failed with exit code: 2                                                    
gyp ERR! stack     at ChildProcess.onExit (/home/ken/.nvm/versions/node/v12.18.2/lib/node_modules/npm/nod
e_modules/node-gyp/lib/build.js:194:23)                                                                  
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)                                               
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)             
gyp ERR! System Linux 5.4.0-40-generic                                                                   
gyp ERR! command "/home/ken/.nvm/versions/node/v12.18.2/bin/node" "/home/ken/.nvm/versions/node/v12.18.2/
lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"                                    
gyp ERR! cwd /home/ken/Documents/learn/stf-test/stf/node_modules/@devicefarmer/jpeg-turbo                
gyp ERR! node -v v12.18.2                                                                                
gyp ERR! node-gyp -v v5.1.0                                                                              
gyp ERR! not ok                                                                                          

What units should I move to a provider machine to get faster speed

This is a question rather than a feature request.

I setup provider machine with adb and provider units. All other units are running in the app server machine.
If the provider machine is located in different country, it looks like controlling devices seems slower. I guess this is due to slow internet speed between countries.

I expect that if I move some other units to the provider machine from the app server machine, the performance will be better.
Could you tell me if it is possible and which units should I move?
I think those are [email protected], stf-triproxy-dev.service and [email protected].

Android 11 Support

Android 11 is not supported for me. Is this something I'm doing wrong or is there somthing in the pipeline for this please?

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating style-loader in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Links to dependencies

Ubuntu 18.04, STF 3.4.3
Pre-changed package placement prefix:
mkdir "${HOME}/.npm-packages"
npm config set prefix "${HOME}/.npm-packages"
Crashed at startup with no dependencies: stf-device-db, stf-browser-db, adbkit, adbkit-apkreader and other.
Temporarily fixed by doing:
cd ~/.npm-packages/lib/node_modules/@devicefarmer/stf/node_modules
for i in $(ls @devicefarmer/); do ln -s @devicefarmer/$i . ; done
Then crashed with no dependencies - minicap-prebuilt-beta, minitouch-prebuilt-beta. So I added:
cd ~
npm install -g minicap-prebuilt-beta minitouch-prebuilt-beta
cd ~/.npm-packages/lib/node_modules/@devicefarmer/stf/node_modules
ln -s ../../../minicap-prebuilt-beta .
ln -s ../../../minitouch-prebuilt-beta .

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating debug in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Inquiries about how to integrate with selenium grids

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

I'm trying to work with the Selenium HQ server.
A number of devices on STF are selected in grid mode to proceed with automation.
Please share your ideas about this.

Help with docker setup - slave machine

What is the issue or idea you have?
I have a dockerized setup using the script from stf-poc on a machineA
I am trying to attach machineB to machineA, but I am having trouble, please help me.

Here are my questions:

  1. Is it enough to just run or install stf-provider and adb on machineB?
  2. For the command stf provider from machineB, should I pass --public-ip with machineA's IP or machineB's IP?
  3. For the command stf provider from machineB, should I pass screen-ws-url-pattern with machineA's IP and stations name?
  4. STF is already running on machineA, should I restart machineA after attaching machineB to it? I am wondering the sequence of these kinds of operations
    Please provide the steps to reproduce the issue.

nginx.conf on machineA:

    location ~ "^/d/machineA/([^/]+)/(?<port>[0-9]{3,5})/$" {
      proxy_pass http://provider:$port/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Real-IP $remote_addr;
    }

    location ~ "^/d/machineB/([^/]+)/(?<port>[0-9]{5})/$" {
      proxy_pass http://${MACHINE_B_IP}:$port/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Real-IP $remote_addr;
    }

For more information, you can see full nginx.conf here

docker-compose.yml on machineA:

Same as here with few changes including auth-ldap

docker-compose.yml on machineB:

version: '3'

volumes:
  storage-temp:

services:
  adb:
    image: sorccu/adb:latest
    restart: unless-stopped
    privileged: true
    volumes:
      - /dev/bus/usb:/dev/bus/usb
  provider:
    image: ${STF_IMAGE}
    restart: unless-stopped
    environment:
      - STF_ADMIN_NAME
      - STF_ADMIN_EMAIL
    command: stf provider --name ${STATION_NAME} --connect-sub tcp://${MACHINE_A_IP}:7250 --connect-push tcp://${MACHINE_A_IP}:7270 --storage-url http://${APP_IP}/ --public-ip ${MACHINE_B_IP} --heartbeat-interval 10000 --screen-ws-url-pattern "ws://${MACHINE_A_IP}/d/${STATION_NAME}/<%= serial %>/<%= publicPort %>/" --adb-host adb --min-port 7400 --max-port 7700
    ports:
      - 7400-7700:7400-7700
    depends_on:
      - adb

nginx.conf on machineB:
There is no nginx.conf on machineB

MI9 failed to show the screen after click the `use`

Device: MI9
SDK: 29

STF version: devicefarmer/stf:latest

STF logs as below:
android-provider2_1 | 2020-09-09T01:28:33.904Z IMP/device:plugins:group 13 [35fbffe7] Now owned by "[email protected]"
android-provider2_1 | 2020-09-09T01:28:33.906Z INF/device:plugins:group 13 [35fbffe7] Subscribing to group channel "T9qTVtveQzSknyebPA78wQ=="
android-provider2_1 | 2020-09-09T01:28:33.998Z INF/device:plugins:screen:stream 13 [35fbffe7] Setting frame producer projection to 645x846
android-provider2_1 | 2020-09-09T01:28:34.001Z INF/device:plugins:screen:stream 13 [35fbffe7] Requesting frame producer to start
nginx_1 | 10.0.2.2 - - [09/Sep/2020:01:28:34 +0000] "GET /static/app/browsers/icon/36x36/android-browser.png HTTP/1.1" 200 3358 "http://192.168.33.100/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0"
nginx_1 | 10.0.2.2 - - [09/Sep/2020:01:28:34 +0000] "GET /static/app/browsers/icon/36x36/chrome.png HTTP/1.1" 200 2388 "http://192.168.33.100/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0"
android-provider2_1 | 2020-09-09T01:28:34.005Z INF/device:plugins:screen:stream 13 [35fbffe7] Launching screen service
android-provider2_1 | 2020-09-09T01:28:34.044Z INF/device:plugins:connect 13 [35fbffe7] Listening on port 7451
android-provider2_1 | 2020-09-09T01:28:34.048Z IMP/device:plugins:connect 13 [35fbffe7] Remote Connect Started for device "35fbffe7" at "192.168.33.100:7451"
android-provider2_1 | 2020-09-09T01:28:34.052Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "PID: 11806"
android-provider2_1 | 2020-09-09T01:28:34.054Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: Using projection 1080x2340@390x846/0"
android-provider2_1 | 2020-09-09T01:28:34.055Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:241) Creating SurfaceComposerClient"
android-provider2_1 | 2020-09-09T01:28:34.057Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:244) Performing SurfaceComposerClient init check"
android-provider2_1 | 2020-09-09T01:28:34.058Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:255) Creating virtual display"
android-provider2_1 | 2020-09-09T01:28:34.059Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:261) Creating buffer queue"
android-provider2_1 | 2020-09-09T01:28:34.061Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:264) Setting buffer options"
android-provider2_1 | 2020-09-09T01:28:34.062Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:268) Creating CPU consumer"
android-provider2_1 | 2020-09-09T01:28:34.064Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:272) Creating frame waiter"
android-provider2_1 | 2020-09-09T01:28:34.071Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:276) Publishing virtual display"
android-provider2_1 | 2020-09-09T01:28:34.073Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "Vector<> have different types (this=0x7fca0f0de0, rhs=0x7fca0f0f30)"
android-provider2_1 | 2020-09-09T01:28:34.075Z INF/device:plugins:screen:stream 13 [35fbffe7] Connecting to minicap service
android-provider2_1 | 2020-09-09T01:28:34.081Z INF/device:plugins:connect 13 [35fbffe7] New remote ADB connection from ::ffff:10.0.2.2
android-provider2_1 | 2020-09-09T01:28:34.100Z WRN/device:plugins:screen:stream 13 [35fbffe7] Shell keeping minicap running ended unexpectedly
android-provider2_1 | 2020-09-09T01:28:35.619Z INF/device:plugins:screen:stream 13 [35fbffe7] Disconnecting from minicap service
android-provider2_1 | 2020-09-09T01:28:35.622Z INF/device:plugins:screen:stream 13 [35fbffe7] Stopping minicap service
android-provider2_1 | 2020-09-09T01:28:35.623Z FTL/device:plugins:screen:stream 13 [35fbffe7] Frame producer had an error FailError: Failure: 'closed'
android-provider2_1 | at /app/node_modules/@devicefarmer/adbkit/lib/adb/parser.js:183:29
android-provider2_1 | at runCallback (timers.js:789:20)
android-provider2_1 | at tryOnImmediate (timers.js:751:5)
android-provider2_1 | at processImmediate [as _immediateCallback] (timers.js:722:5)
android-provider2_1 | 2020-09-09T01:28:35.625Z FTL/util:lifecycle 13 [35fbffe7] Shutting down due to fatal error
android-provider2_1 | 2020-09-09T01:28:35.634Z INF/provider 1 [] Cleaning up device worker "35fbffe7"
android-provider2_1 | 2020-09-09T01:28:35.635Z ERR/provider 1 [
] Device worker "35fbffe7" died with code 1
android-provider2_1 | 2020-09-09T01:28:35.635Z INF/provider 1 [*] Restarting device worker "35fbffe7"
android-provider2_1 | 2020-09-09T01:28:36.443Z INF/device:support:push 49 [35fbffe7] Sending output to "tcp://dev-triproxy:7270"
android-provider2_1 | 2020-09-09T01:28:36.447Z INF/device 49 [35fbffe7] Preparing device
android-provider2_1 | 2020-09-09T01:28:36.958Z INF/device:support:sub 49 [35fbffe7] Receiving input from "tcp://dev-triproxy:7250"
android-provider2_1 | 2020-09-09T01:28:36.961Z INF/device:support:sub 49 [35fbffe7] Subscribing to permanent channel "*ALL"
android-provider2_1 | 2020-09-09T01:28:37.012Z INF/device:support:properties 49 [35fbffe7] Loading properties
android-provider2_1 | 2020-09-09T01:28:37.045Z INF/device:support:sdk 49 [35fbffe7] Supports SDK 29
android-provider2_1 | 2020-09-09T01:28:37.047Z INF/device:support:abi 49 [35fbffe7] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
android-provider2_1 | 2020-09-09T01:28:37.187Z INF/device:resources:minicap 49 [35fbffe7] Installing "/app/node_modules/@devicefarmer/minicap-prebuilt/prebuilt/arm64-v8a/bin/minicap" as "/data/local/tmp/minicap"
android-provider2_1 | 2020-09-09T01:28:37.188Z INF/device:resources:minicap 49 [35fbffe7] Installing "/app/node_modules/@devicefarmer/minicap-prebuilt/prebuilt/arm64-v8a/lib/android-29/minicap.so" as "/data/local/tmp/minicap.so"
android-provider2_1 | 2020-09-09T01:28:37.270Z INF/device:resources:service 49 [35fbffe7] Checking whether we need to install STFService
android-provider2_1 | 2020-09-09T01:28:37.315Z INF/device:resources:service 49 [35fbffe7] Running version check
android-provider2_1 | 2020-09-09T01:28:37.551Z INF/device:resources:service 49 [35fbffe7] STFService up to date
android-provider2_1 | 2020-09-09T01:28:37.556Z INF/device:plugins:service 49 [35fbffe7] Launching agent
android-provider2_1 | 2020-09-09T01:28:37.883Z INF/device:plugins:service 49 [35fbffe7] Agent says: "Starting minitouch agent"
android-provider2_1 | 2020-09-09T01:28:37.901Z INF/device:plugins:service 49 [35fbffe7] Agent says: "Listening on @stfagent"
android-provider2_1 | 2020-09-09T01:28:37.915Z INF/device:plugins:service 49 [35fbffe7] Launching service
android-provider2_1 | 2020-09-09T01:28:37.916Z INF/device:plugins:service 49 [35fbffe7] using 'start-foreground-service' command for API 29
android-provider2_1 | 2020-09-09T01:28:37.918Z INF/device:plugins:service 49 [35fbffe7] Agent says: "InputClient started"
android-provider2_1 | 2020-09-09T01:28:37.967Z INF/device:plugins:display 49 [35fbffe7] Reading display info
android-provider2_1 | 2020-09-09T01:28:37.982Z INF/device:plugins:phone 49 [35fbffe7] Fetching phone info
android-provider2_1 | 2020-09-09T01:28:37.996Z INF/device:plugins:identity 49 [35fbffe7] Solving identity
android-provider2_1 | 2020-09-09T01:28:38.004Z INF/device:plugins:solo 49 [35fbffe7] Subscribing to permanent channel "dXV5c4EV96KRZMyT48Lo17Vv3Dg="
android-provider2_1 | 2020-09-09T01:28:38.006Z INF/device:plugins:screen:stream 49 [35fbffe7] Starting WebSocket server on port 7462
android-provider2_1 | 2020-09-09T01:28:38.135Z INF/device:resources:minitouch 49 [35fbffe7] Installing "/app/node_modules/@devicefarmer/minitouch-prebuilt/prebuilt/arm64-v8a/bin/minitouch" as "/data/local/tmp/minitouch"
android-provider2_1 | 2020-09-09T01:28:38.175Z WRN/device:plugins:data 49 [35fbffe7] Unable to find device data { serial: '35fbffe7',
android-provider2_1 | platform: 'Android',
android-provider2_1 | manufacturer: 'XIAOMI',
android-provider2_1 | operator: null,
android-provider2_1 | model: 'MI 9',
android-provider2_1 | version: '10',
android-provider2_1 | abi: 'arm64-v8a',
android-provider2_1 | sdk: '29',
android-provider2_1 | product: 'cepheus',
android-provider2_1 | cpuPlatform: 'msmnile',
android-provider2_1 | openGLESVersion: '3.2',
android-provider2_1 | marketName: 'MI 9',
android-provider2_1 | display:
android-provider2_1 | { id: 0,
android-provider2_1 | width: 1080,
android-provider2_1 | height: 2340,
android-provider2_1 | xdpi: 403.4110107421875,
android-provider2_1 | ydpi: 404.32598876953125,
android-provider2_1 | fps: 60.000003814697266,
android-provider2_1 | density: 2.75,
android-provider2_1 | rotation: 0,
android-provider2_1 | secure: true,
android-provider2_1 | size: 6.37662511715682,
android-provider2_1 | url: 'ws://192.168.33.100:7462' },
android-provider2_1 | phone: { network: 'UNKNOWN' } }
android-provider2_1 | 2020-09-09T01:28:38.181Z INF/device:plugins:touch 49 [35fbffe7] Touch origin is top left
android-provider2_1 | 2020-09-09T01:28:38.182Z INF/device:plugins:touch 49 [35fbffe7] Requesting touch consumer to start
android-provider2_1 | 2020-09-09T01:28:38.184Z INF/device:plugins:touch 49 [35fbffe7] Launching touch service
android-provider2_1 | 2020-09-09T01:28:38.200Z INF/device:plugins:touch 49 [35fbffe7] Connecting to minitouch service
android-provider2_1 | 2020-09-09T01:28:38.209Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "open: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.211Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event7 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.214Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event6 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.215Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event5 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.216Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event3 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.218Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event0 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.219Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event1 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.221Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event2 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.222Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event4 for inspectionUnable to find a suitable touch device"
android-provider2_1 | 2020-09-09T01:28:38.223Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "using Android InputManager"
android-provider2_1 | 2020-09-09T01:28:38.316Z INF/device:plugins:touch 49 [35fbffe7] Reading minitouch banner
android-provider2_1 | 2020-09-09T01:28:38.319Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Connection established"
android-provider2_1 | 2020-09-09T01:28:38.323Z INF/device:plugins:vnc 49 [35fbffe7] Starting VNC server on port 7464
android-provider2_1 | 2020-09-09T01:28:38.326Z INF/device:plugins:browser 49 [35fbffe7] Loading browser list
android-provider2_1 | 2020-09-09T01:28:38.336Z INF/device:plugins:browser 49 [35fbffe7] Updating browser list
android-provider2_1 | 2020-09-09T01:28:38.337Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.alibaba.android.rimet"
android-provider2_1 | 2020-09-09T01:28:38.339Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.baidu.haokan"
android-provider2_1 | 2020-09-09T01:28:38.340Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.baidu.searchbox"
android-provider2_1 | 2020-09-09T01:28:38.341Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.sina.weibo"
android-provider2_1 | 2020-09-09T01:28:38.347Z INF/device:plugins:mute 49 [35fbffe7] Will not mute master volume
android-provider2_1 | 2020-09-09T01:28:38.461Z INF/device:resources:minirev 49 [35fbffe7] Installing "/app/vendor/minirev/arm64-v8a/minirev" as "/data/local/tmp/minirev"
android-provider2_1 | 2020-09-09T01:28:38.516Z INF/device:plugins:forward 49 [35fbffe7] Launching reverse port forwarding service
android-provider2_1 | 2020-09-09T01:28:38.534Z INF/device:plugins:forward 49 [35fbffe7] Connecting to reverse port forwarding service
android-provider2_1 | 2020-09-09T01:28:38.695Z INF/device 49 [35fbffe7] Fully operational
nginx_1 | 10.0.2.2 - - [09/Sep/2020:01:28:39 +0000] "GET /static/app/devices/icon/x120/E30HT.jpg HTTP/1.1" 200 1528 "http://192.168.33.100/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0"

Support Android 11

Is your feature request related to a problem? Please describe.
I started STF server by using docker-compose file like this compose file.
Other devices were connected to STF.
Pixel3 (11) cannot connected to STF, even though it is connected to ADB

Describe the solution you'd like
Support Android 11 OS

Additional context
lsusb
Bus 001 Device 058: ID 18d1:4ee2 Google Inc. Nexus Device (debug)

adb --version (Trial 1 - sorccu/adb:latest)

Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as /opt/platform-tools/adb

adb --version (Trial 2 - I updated it to use docker image from "devicefarmer/adb:latest")

Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as /opt/platform-tools/adb

stf doctor (from stf app container)

2020-09-25T02:40:44.439Z INF/cli:doctor 20 [*] OS Arch: x64
2020-09-25T02:40:44.441Z INF/cli:doctor 20 [*] OS Platform: linux
2020-09-25T02:40:44.441Z INF/cli:doctor 20 [*] OS Platform: 5.4.0-47-generic
2020-09-25T02:40:44.441Z INF/cli:doctor 20 [*] Using Node 8.9.3
2020-09-25T02:40:44.449Z INF/cli:doctor 20 [*] Using ZeroMQ 4.1.4
2020-09-25T02:40:44.459Z ERR/cli:doctor 20 [*] RethinkDB is not installed (`rethinkdb` is missing)
2020-09-25T02:40:44.459Z ERR/cli:doctor 20 [*] ProtoBuf is not installed (`protoc` is missing)
2020-09-25T02:40:44.459Z ERR/cli:doctor 20 [*] ADB is not installed (`adb` is missing)
2020-09-25T02:40:44.499Z INF/cli:doctor 20 [*] Using GraphicsMagick 1.3.23

Xiaomi Note 9 Pro, impossible to see screen

What is the issue or idea you have?
Impossible to use Xiaomi Note 9 Pro on STF latest (I have docker pull today)

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.
Yes

ae223d4                device usb:3-2.3.4.4.1.4 product:joyeuse_eea model:Redmi_Note_9_Pro device:joyeuse transport_id:13187

Please provide the steps to reproduce the issue.
Plug a Xiaomi Note 9 Pro on STF. Test to use it. A green screen is displayed

image

What is the expected behavior?
I can used the phone screen on STF.

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

1              | 2020-10-07T08:50:48.814Z INF/device:plugins:display 3670 [ae223d4] Reading display info
stf-local_1              | 2020-10-07T08:50:48.868Z INF/device:plugins:phone 3670 [ae223d4] Fetching phone info
stf-local_1              | 2020-10-07T08:50:48.890Z INF/device:plugins:identity 3670 [ae223d4] Solving identity
stf-local_1              | 2020-10-07T08:50:48.896Z INF/device:plugins:solo 3670 [ae223d4] Subscribing to permanent channel "ysGE+35oxbQxUYgsUYRHBtC6+s8="
stf-local_1              | 2020-10-07T08:50:48.899Z INF/device:plugins:screen:stream 3670 [ae223d4] Starting WebSocket server on port 7708
stf-local_1              | Wed, 07 Oct 2020 08:50:48 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:48 GMT adb:command Send '0014shell:ps 2>/dev/null'
stf-local_1              | Wed, 07 Oct 2020 08:50:48 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:48 GMT adb:command Send '0019shell:ps -lef 2>/dev/null'
stf-local_1              | 2020-10-07T08:50:49.014Z INF/device:resources:minitouch 3670 [ae223d4] Installing "/app/node_modules/@devicefarmer/minitouch-prebuilt/prebuilt/arm64-v8a/bin/minitouch" as "/data/local/tmp/minitouch"
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '002Bshell:'rm' '-f' '/data/local/tmp/minitouch''
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0005sync:'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:sync SEND /data/local/tmp/minitouch,33261
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:sync DONE
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0005sync:'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:sync STAT /data/local/tmp/minitouch
stf-local_1              | 2020-10-07T08:50:49.077Z WRN/device:plugins:data 3670 [ae223d4] Unable to find device data { serial: 'ae223d4',
stf-local_1              |   platform: 'Android',
stf-local_1              |   manufacturer: 'XIAOMI',
stf-local_1              |   operator: null,
stf-local_1              |   model: ' Note 9 Pro',
stf-local_1              |   version: '10',
stf-local_1              |   abi: 'arm64-v8a',
stf-local_1              |   sdk: '29',
stf-local_1              |   product: 'joyeuse_eea',
stf-local_1              |   cpuPlatform: 'atoll',
stf-local_1              |   openGLESVersion: '3.2',
stf-local_1              |   marketName: 'Redmi Note 9 Pro',
stf-local_1              |   display: 
stf-local_1              |    { id: 0,
stf-local_1              |      width: 1080,
stf-local_1              |      height: 2400,
stf-local_1              |      xdpi: 397.56500244140625,
stf-local_1              |      ydpi: 395.843994140625,
stf-local_1              |      fps: 60.000003814697266,
stf-local_1              |      density: 2.75,
stf-local_1              |      rotation: 0,
stf-local_1              |      secure: true,
stf-local_1              |      size: 6.643754683286824,
stf-local_1              |      url: 'ws://10.110.151.129:7708' },
stf-local_1              |   phone: { network: 'UNKNOWN' } }
stf-local_1              | 2020-10-07T08:50:49.081Z INF/device:plugins:touch 3670 [ae223d4] Touch origin is top left
stf-local_1              | 2020-10-07T08:50:49.081Z INF/device:plugins:touch 3670 [ae223d4] Requesting touch consumer to start
stf-local_1              | 2020-10-07T08:50:49.081Z INF/device:plugins:touch 3670 [ae223d4] Launching touch service
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0024shell:exec /data/local/tmp/minitouch'
stf-local_1              | 2020-10-07T08:50:49.095Z INF/device:plugins:touch 3670 [ae223d4] Connecting to minitouch service
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0017localabstract:minitouch'
stf-local_1              | 2020-10-07T08:50:49.136Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "open: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.136Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event9 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.136Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event8 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.137Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event7 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.137Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event6 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.137Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event2 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.138Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event5 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.138Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event3 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.139Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event1 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.139Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event0 for inspectionopen: Permission denied"
stf-local_1              | 2020-10-07T08:50:49.140Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Unable to open device /dev/input/event4 for inspectionUnable to find a suitable touch device"
stf-local_1              | 2020-10-07T08:50:49.140Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "using Android InputManager"
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0017localabstract:minitouch'
stf-local_1              | 2020-10-07T08:50:49.205Z INF/device:plugins:touch 3670 [ae223d4] Reading minitouch banner
stf-local_1              | 2020-10-07T08:50:49.205Z INF/device:plugins:touch 3670 [ae223d4] minitouch says: "Connection established"
stf-local_1              | 2020-10-07T08:50:49.249Z INF/device:plugins:vnc 3670 [ae223d4] Starting VNC server on port 7710
stf-local_1              | 2020-10-07T08:50:49.251Z INF/device:plugins:browser 3670 [ae223d4] Loading browser list
stf-local_1              | 2020-10-07T08:50:49.266Z INF/device:plugins:browser 3670 [ae223d4] Updating browser list
stf-local_1              | 2020-10-07T08:50:49.267Z INF/device:plugins:mute 3670 [ae223d4] Will not mute master volume
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0014shell:ps 2>/dev/null'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0019shell:ps -lef 2>/dev/null'
stf-local_1              | 2020-10-07T08:50:49.371Z INF/device:resources:minirev 3670 [ae223d4] Installing "/app/vendor/minirev/arm64-v8a/minirev" as "/data/local/tmp/minirev"
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0029shell:'rm' '-f' '/data/local/tmp/minirev''
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0005sync:'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:sync SEND /data/local/tmp/minirev,33261
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:sync DONE
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0005sync:'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:sync STAT /data/local/tmp/minirev
stf-local_1              | 2020-10-07T08:50:49.414Z INF/device:plugins:forward 3670 [ae223d4] Launching reverse port forwarding service
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0026shell:'exec' '/data/local/tmp/minirev''
stf-local_1              | 2020-10-07T08:50:49.426Z INF/device:plugins:forward 3670 [ae223d4] Connecting to reverse port forwarding service
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0016host:transport:ae223d4'
stf-local_1              | Wed, 07 Oct 2020 08:50:49 GMT adb:command Send '0015localabstract:minirev'
stf-local_1              | 2020-10-07T08:50:49.461Z FTL/device 3657 [183568d10304] Setup had an error Error: Service had an error: "Error: Not found; no service started."
stf-local_1              |     at /app/lib/units/device/plugins/service.js:104:23
stf-local_1              | From previous event:
stf-local_1              |     at /app/lib/units/device/plugins/service.js:79:14
stf-local_1              |     at runCallback (timers.js:789:20)
stf-local_1              |     at tryOnImmediate (timers.js:751:5)
stf-local_1              |     at processImmediate [as _immediateCallback] (timers.js:722:5)
stf-local_1              | 2020-10-07T08:50:49.461Z FTL/util:lifecycle 3657 [183568d10304] Shutting down due to fatal error
stf-local_1              | 2020-10-07T08:50:49.469Z INF/provider 46 [*] Cleaning up device worker "183568d10304"
stf-local_1              | 2020-10-07T08:50:49.469Z ERR/provider 46 [*] Device worker "183568d10304" died with code 1
stf-local_1              | 2020-10-07T08:50:49.469Z INF/provider 46 [*] Restarting device worker "183568d10304"

Can disable the screenshot saving process?

What is the issue or idea you have?
Screenshot saving process while checking from the Inspect Element.

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.

Please provide the steps to reproduce the issue.
By checking in Inspect Element > Network. Have attached the pictures below.

What is the expected behavior?
Currently my OpenSTF is installed in office and (due to ongoing covid issue) accessing from home through VPN connection and is very slow.
Is it this screenshot saving might be reason to consuming the bandwidth and being slow?

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

Please run stf doctor and paste the output here.

stf1
stf2

Question - Is it possible to set the rsa key to be accepted without using the UI?

What is the issue or idea you have?
I would like to be able to create a new user via the api that can grab devices and connect with them via adb without having to go into the UI to add the adb public key. Is there any way of doing this currently?

I can't find anything in the api documentation that deals with rsa keys, and if the right key is not set in the UI somehow then even if I have called the remote connect command, the device just comes up as "offline" or "unauthorised".

How to check the version of OpenSTF?

What is the issue or idea you have?
I'm unable to check the STF version currently I am using.

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.

Please provide the steps to reproduce the issue.
I installed the STF by pulling the docker from docker pull devicefarmer/stf and working fine.
I just want to know how to know the version of running STF.
The command stf -version doesn't work.

What is the expected behavior?

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

Please run stf doctor and paste the output here.

MI8SE can't see anything, but can touch or swipe

DeviceFarmer/stf:
Run in docker (Ubuntu ~16.04.5)
device:Xiao Mi MI 8 SE (other devices is normal)
MI 8SE SDK API 29, android-os 10, MIUI 11.0.3(This mi8 is upgraded system)
the command what I used is 'docker run -d --name stf --net host deviceFarmer/stf stf local --public-ip 192.168.x.xxx'
What is the issue or idea you have?
Then the device screen is grey, but it can touch or swipe:
捕获

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.
image

Please provide the steps to reproduce the issue.

What is the expected behavior?

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.
2020-08-10T09:42:19.265Z INF/util:procutil 289 [] Forking "/app/lib/cli migrate"
2020-08-10T09:42:19.598Z INF/db 295 [
] Connecting to 127.0.0.1:28015
2020-08-10T09:42:19.618Z INF/db:setup 295 [] Database "stf" already exists
2020-08-10T09:42:19.625Z INF/db:setup 295 [
] Table "users" already exists
2020-08-10T09:42:19.625Z INF/db:setup 295 [] Table "accessTokens" already exists
2020-08-10T09:42:19.625Z INF/db:setup 295 [
] Table "vncauth" already exists
2020-08-10T09:42:19.625Z INF/db:setup 295 [] Table "devices" already exists
2020-08-10T09:42:19.626Z INF/db:setup 295 [
] Table "logs" already exists
2020-08-10T09:42:19.626Z INF/db:setup 295 [] Table "groups" already exists
2020-08-10T09:42:19.650Z INF/db:setup 295 [
] Index "users"."adbKeys" already exists
2020-08-10T09:42:19.653Z INF/db:setup 295 [] Index "accessTokens"."email" already exists
2020-08-10T09:42:19.653Z INF/db:setup 295 [
] Index "vncauth"."response" already exists
2020-08-10T09:42:19.654Z INF/db:setup 295 [] Index "vncauth"."responsePerDevice" already exists
2020-08-10T09:42:19.657Z INF/db:setup 295 [
] Index "devices"."owner" already exists
2020-08-10T09:42:19.658Z INF/db:setup 295 [] Index "devices"."logs_enabled" already exists
2020-08-10T09:42:19.660Z INF/db:setup 295 [
] Index "devices"."present" already exists
2020-08-10T09:42:19.660Z INF/db:setup 295 [] Index "devices"."providerChannel" already exists
2020-08-10T09:42:19.661Z INF/db:setup 295 [
] Index "devices"."group" already exists
2020-08-10T09:42:19.661Z INF/db:setup 295 [] Index "groups"."privilege" already exists
2020-08-10T09:42:19.664Z INF/db:setup 295 [
] Index "groups"."owner" already exists
2020-08-10T09:42:19.664Z INF/db:setup 295 [] Index "groups"."startTime" already exists
2020-08-10T09:42:19.665Z INF/db:setup 295 [
] Waiting for index "users"."adbKeys"
2020-08-10T09:42:19.667Z INF/db:setup 295 [] Waiting for index "accessTokens"."email"
2020-08-10T09:42:19.667Z INF/db:setup 295 [
] Waiting for index "vncauth"."response"
2020-08-10T09:42:19.667Z INF/db:setup 295 [] Waiting for index "vncauth"."responsePerDevice"
2020-08-10T09:42:19.668Z INF/db:setup 295 [
] Waiting for index "devices"."owner"
2020-08-10T09:42:19.669Z INF/db:setup 295 [] Waiting for index "devices"."logs_enabled"
2020-08-10T09:42:19.669Z INF/db:setup 295 [
] Waiting for index "devices"."present"
2020-08-10T09:42:19.669Z INF/db:setup 295 [] Waiting for index "devices"."providerChannel"
2020-08-10T09:42:19.669Z INF/db:setup 295 [
] Waiting for index "devices"."group"
2020-08-10T09:42:19.670Z INF/db:setup 295 [] Waiting for index "groups"."privilege"
2020-08-10T09:42:19.670Z INF/db:setup 295 [
] Waiting for index "groups"."owner"
2020-08-10T09:42:19.670Z INF/db:setup 295 [] Waiting for index "groups"."startTime"
2020-08-10T09:42:19.713Z INF/db:setup 295 [
] Index "users"."adbKeys" is ready
2020-08-10T09:42:19.714Z INF/db:setup 295 [] Index "accessTokens"."email" is ready
2020-08-10T09:42:19.722Z INF/db:setup 295 [
] Index "vncauth"."response" is ready
2020-08-10T09:42:19.735Z INF/db:setup 295 [] Index "vncauth"."responsePerDevice" is ready
2020-08-10T09:42:19.735Z INF/db:setup 295 [
] Index "devices"."owner" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [] Index "devices"."logs_enabled" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [
] Index "devices"."present" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [] Index "devices"."providerChannel" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [
] Index "devices"."group" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [] Index "groups"."privilege" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [
] Index "groups"."owner" is ready
2020-08-10T09:42:19.736Z INF/db:setup 295 [] Index "groups"."startTime" is ready
2020-08-10T09:42:20.749Z INF/util:procutil 289 [
] Forking "/app/lib/cli triproxy app001 --bind-pub tcp://127.0.0.1:7111 --bind-dealer tcp://127.0.0.1:7112 --bind-pull tcp://127.0.0.1:7113"
2020-08-10T09:42:20.752Z INF/util:procutil 289 [] Forking "/app/lib/cli triproxy dev001 --bind-pub tcp://127.0.0.1:7114 --bind-dealer tcp://127.0.0.1:7115 --bind-pull tcp://127.0.0.1:7116"
2020-08-10T09:42:20.753Z INF/util:procutil 289 [
] Forking "/app/lib/cli processor proc001 --connect-app-dealer tcp://127.0.0.1:7112 --connect-dev-dealer tcp://127.0.0.1:7115"
2020-08-10T09:42:20.760Z INF/util:procutil 289 [] Forking "/app/lib/cli processor proc002 --connect-app-dealer tcp://127.0.0.1:7112 --connect-dev-dealer tcp://127.0.0.1:7115"
2020-08-10T09:42:20.790Z INF/util:procutil 289 [
] Forking "/app/lib/cli reaper reaper001 --connect-push tcp://127.0.0.1:7116 --connect-sub tcp://127.0.0.1:7111"
2020-08-10T09:42:20.800Z INF/util:procutil 289 [] Forking "/app/lib/cli provider --name myroot-virtual-machine --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip localhost --storage-url http://localhost:7100/ --adb-host 127.0.0.1 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never"
2020-08-10T09:42:20.809Z INF/util:procutil 289 [
] Forking "/app/lib/cli auth-mock --port 7120 --secret kute kittykat --app-url http://localhost:7100/"
2020-08-10T09:42:20.839Z INF/util:procutil 289 [] Forking "/app/lib/cli app --port 7105 --secret kute kittykat --auth-url http://localhost:7100/auth/mock/ --websocket-url http://localhost:7110/"
2020-08-10T09:42:20.843Z INF/util:procutil 289 [
] Forking "/app/lib/cli api --port 7106 --secret kute kittykat --connect-push tcp://127.0.0.1:7113 --connect-sub tcp://127.0.0.1:7111 --connect-push-dev tcp://127.0.0.1:7116 --connect-sub-dev tcp://127.0.0.1:7114"
2020-08-10T09:42:20.860Z INF/util:procutil 289 [] Forking "/app/lib/cli groups-engine --connect-push tcp://127.0.0.1:7113 --connect-sub tcp://127.0.0.1:7111 --connect-push-dev tcp://127.0.0.1:7116 --connect-sub-dev tcp://127.0.0.1:7114"
2020-08-10T09:42:20.872Z INF/util:procutil 289 [
] Forking "/app/lib/cli websocket --port 7110 --secret kute kittykat --storage-url http://localhost:7100/ --connect-sub tcp://127.0.0.1:7111 --connect-push tcp://127.0.0.1:7113"
2020-08-10T09:42:20.911Z INF/util:procutil 289 [] Forking "/app/lib/cli storage-temp --port 7102"
2020-08-10T09:42:20.919Z INF/util:procutil 289 [
] Forking "/app/lib/cli storage-plugin-image --port 7103 --storage-url http://localhost:7100/"
2020-08-10T09:42:20.935Z INF/util:procutil 289 [] Forking "/app/lib/cli storage-plugin-apk --port 7104 --storage-url http://localhost:7100/"
2020-08-10T09:42:20.944Z INF/util:procutil 289 [
] Forking "/app/lib/cli poorxy --port 7100 --app-url http://localhost:7105/ --auth-url http://localhost:7120/ --api-url http://localhost:7106/ --websocket-url http://localhost:7110/ --storage-url http://localhost:7102/ --storage-plugin-image-url http://localhost:7103/ --storage-plugin-apk-url http://localhost:7104/"
lib/cli triproxy [name]

Options:
-h, --help Show help. [boolean]
-V, --version Show version. [boolean]
--bind-dealer, -d The address to bind the ZeroMQ DEALER endpoint to.
[string] [default: "tcp://:7112"]
--bind-pub, -u The address to bind the ZeroMQ PUB endpoint to.
[string] [default: "tcp://
:7111"]
--bind-pull, -p The address to bind the ZeroMQ PULL endpoint to.
[string] [default: "tcp://*:7113"]
--name An easily identifiable name for log output.
[string] [default: "myroot-virtual-machine"]

Each option can be be overwritten with an environment variable by converting the
option to uppercase, replacing dashes with underscores and prefixing it with
STF_TRIPROXY_ (e.g. STF_TRIPROXY_BIND_PUB).

Address already in use
2020-08-10T09:42:22.363Z FTL/cli:local 289 [] Child process had an error ExitError: Exit code "1"
at ChildProcess. (/app/lib/util/procutil.js:49:23)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
2020-08-10T09:42:22.364Z INF/cli:local 289 [
] Shutting down all child processes
lib/cli triproxy [name]

Options:
-h, --help Show help. [boolean]
-V, --version Show version. [boolean]
--bind-dealer, -d The address to bind the ZeroMQ DEALER endpoint to.
[string] [default: "tcp://:7112"]
--bind-pub, -u The address to bind the ZeroMQ PUB endpoint to.
[string] [default: "tcp://
:7111"]
--bind-pull, -p The address to bind the ZeroMQ PULL endpoint to.
[string] [default: "tcp://*:7113"]
--name An easily identifiable name for log output.
[string] [default: "myroot-virtual-machine"]

Each option can be be overwritten with an environment variable by converting the
option to uppercase, replacing dashes with underscores and prefixing it with
STF_TRIPROXY_ (e.g. STF_TRIPROXY_BIND_PUB).

Address already in use

Please run stf doctor and paste the output here.
run in docker:
root@myroot-virtual-machine:/home/myroot# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ceec0e333d devicefarmer/stf "stf local --public-…" 8 hours ago Up 9 minutes stf2
f28131ef3d sorccu/adb:latest "/sbin/tini -- adb -…" 3 days ago Up 9 minutes adbd
325218acfb rethinkdb "rethinkdb --bind al…" 3 days ago Up 9 minutes rethinkdb

$ stf doctor
2020-08-10T09:49:32.857Z INF/cli:doctor 516 [] OS Arch: x64
2020-08-10T09:49:32.859Z INF/cli:doctor 516 [
] OS Platform: linux
2020-08-10T09:49:32.859Z INF/cli:doctor 516 [] OS Platform: 4.4.0-104-generic
2020-08-10T09:49:32.859Z INF/cli:doctor 516 [
] Using Node 8.9.3
2020-08-10T09:49:32.883Z INF/cli:doctor 516 [] Using ZeroMQ 4.1.4
2020-08-10T09:49:32.906Z ERR/cli:doctor 516 [
] RethinkDB is not installed (rethinkdb is missing)
2020-08-10T09:49:32.906Z ERR/cli:doctor 516 [] ProtoBuf is not installed (protoc is missing)
2020-08-10T09:49:32.907Z ERR/cli:doctor 516 [
] ADB is not installed (adb is missing)
2020-08-10T09:49:33.401Z INF/cli:doctor 516 [*] Using GraphicsMagick 1.3.23

`adb reverse` doesn't work

What is the issue or idea you have?
adb reverse don't work over STF

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.
It doesn't work on both of my devices

Please provide the steps to reproduce the issue.
On Development PC:
adb connect :
adb reverse tcp:12345 tcp:12345
nc -lp 12345
On mobile device
toybox nc 127.0.0.1 12345
toybox nc localhost 12345
both don't work.

What is the expected behavior?
It should connect to the nc

Disable auto rollback

Hi team! Help solve the problem, please. When I press the "stop using" button, all the changes that I made during this session disappear: downloading applications, updating them, and so on. Have you encountered this?

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating markdown-serve in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

LG phone Android 10 arm64-v8a

Confirm that this problem is solved or not please

Vector<> have different types (this=0x7fcc7b3280, rhs=0x7fcc7b33d0)"

List of devices attached                                                                     
LMK920TMef2ec11c       device usb:1-1.1.3 product:acexlm model:LM_K920 device:acexlm         

Opening the UI I get this and then your phone has been stolen

2020-10-06T06:45:22.458Z INF/device:plugins:group 4248 [LMK920TMef2ec11c] Subscribing to group channel "27wYow6vQ7KHx53MvmzFQw=="
2020-10-06T06:45:23.561Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Setting frame producer projection to 865x864
2020-10-06T06:45:23.562Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Requesting frame producer to start
2020-10-06T06:45:23.563Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Launching screen service
2020-10-06T06:45:23.641Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "PID: 1737"
2020-10-06T06:45:23.642Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: Using projection 1080x2400@389x864/0"
2020-10-06T06:45:23.642Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:241) Creating SurfaceComposerClient"
2020-10-06T06:45:23.643Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Connecting to minicap service
2020-10-06T06:45:23.647Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:244) Performing SurfaceComposerClient init check"
2020-10-06T06:45:23.649Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:255) Creating virtual display"
2020-10-06T06:45:23.655Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:261) Creating buffer queue"
2020-10-06T06:45:23.657Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:264) Setting buffer options"
2020-10-06T06:45:23.658Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:268) Creating CPU consumer"
2020-10-06T06:45:23.660Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:272) Creating frame waiter"
2020-10-06T06:45:23.661Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:276) Publishing virtual display"
2020-10-06T06:45:23.662Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] minicap says: "Vector<> have different types (this=0x7fcc7b3280, rhs=0x7fcc7b33d0)"
2020-10-06T06:45:23.754Z WRN/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Shell keeping minicap running ended unexpectedly
2020-10-06T06:45:25.524Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Disconnecting from minicap service
2020-10-06T06:45:25.526Z INF/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Stopping minicap service
2020-10-06T06:45:25.527Z FTL/device:plugins:screen:stream 4248 [LMK920TMef2ec11c] Frame producer had an error FailError: Failure: 'closed'
    at /usr/lib/node_modules/stf/node_modules/adbkit/lib/adb/parser.js:183:29
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)
2020-10-06T06:45:25.528Z FTL/util:lifecycle 4248 [LMK920TMef2ec11c] Shutting down due to fatal error
2020-10-06T06:45:25.556Z INF/provider 23167 [*] Cleaning up device worker "LMK920TMef2ec11c"
2020-10-06T06:45:25.557Z ERR/provider 23167 [*] Device worker "LMK920TMef2ec11c" died with code 1
2020-10-06T06:45:25.557Z INF/provider 23167 [*] Restarting device worker "LMK920TMef2ec11c"
2020-10-06T06:45:26.602Z INF/device:support:push 7385 [LMK920TMef2ec11c] Sending output to "tcp://127.0.0.1:7116"
2020-10-06T06:45:26.608Z INF/device 7385 [LMK920TMef2ec11c] Preparing device
2020-10-06T06:45:27.643Z INF/device:support:sub 7385 [LMK920TMef2ec11c] Receiving input from "tcp://127.0.0.1:7114"
2020-10-06T06:45:27.646Z INF/device:support:sub 7385 [LMK920TMef2ec11c] Subscribing to permanent channel "*ALL"
2020-10-06T06:45:27.746Z INF/device:support:properties 7385 [LMK920TMef2ec11c] Loading properties
2020-10-06T06:45:27.838Z INF/device:support:sdk 7385 [LMK920TMef2ec11c] Supports SDK 29
2020-10-06T06:45:27.840Z INF/device:support:abi 7385 [LMK920TMef2ec11c] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
2020-10-06T06:45:28.084Z INF/device:resources:minicap 7385 [LMK920TMef2ec11c] Installing "/usr/lib/node_modules/stf/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/bin/minicap" as "/data/local/tmp/minicap"
2020-10-06T06:45:28.085Z INF/device:resources:minicap 7385 [LMK920TMef2ec11c] Installing "/usr/lib/node_modules/stf/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-29/minicap.so" as "/data/local/tmp/minicap.so"
2020-10-06T06:45:28.402Z INF/device:resources:service 7385 [LMK920TMef2ec11c] Checking whether we need to install STFService
2020-10-06T06:45:28.486Z INF/device:resources:service 7385 [LMK920TMef2ec11c] Running version check
2020-10-06T06:45:28.866Z INF/device:resources:service 7385 [LMK920TMef2ec11c] Installing STFService
2020-10-06T06:45:31.452Z INF/device:resources:service 7385 [LMK920TMef2ec11c] STFService up to date
2020-10-06T06:45:31.458Z INF/device:plugins:service 7385 [LMK920TMef2ec11c] Launching agent
2020-10-06T06:45:32.168Z INF/device:plugins:service 7385 [LMK920TMef2ec11c] Agent says: "Starting minitouch agent"
2020-10-06T06:45:32.169Z INF/device:plugins:service 7385 [LMK920TMef2ec11c] Agent says: "Listening on @stfagent"
2020-10-06T06:45:32.232Z INF/device:plugins:service 7385 [LMK920TMef2ec11c] Launching service
2020-10-06T06:45:32.233Z INF/device:plugins:service 7385 [LMK920TMef2ec11c] using 'start-foreground-service' command for API 29
2020-10-06T06:45:32.237Z INF/device:plugins:service 7385 [LMK920TMef2ec11c] Agent says: "InputClient started"
2020-10-06T06:45:32.414Z INF/device:plugins:display 7385 [LMK920TMef2ec11c] Reading display info
2020-10-06T06:45:32.491Z INF/device:plugins:phone 7385 [LMK920TMef2ec11c] Fetching phone info
2020-10-06T06:45:32.571Z INF/device:plugins:identity 7385 [LMK920TMef2ec11c] Solving identity
2020-10-06T06:45:32.577Z INF/device:plugins:solo 7385 [LMK920TMef2ec11c] Subscribing to permanent channel "wz4oakJcAfWJVyJ8BYbxk/6jqns="
2020-10-06T06:45:32.579Z INF/device:plugins:screen:stream 7385 [LMK920TMef2ec11c] Starting WebSocket server on port 7528
2020-10-06T06:45:32.805Z INF/device:resources:minitouch 7385 [LMK920TMef2ec11c] Installing "/usr/lib/node_modules/stf/node_modules/minitouch-prebuilt-beta/prebuilt/arm64-v8a/bin/minitouch" as "/data/local/tmp/minitouch"
2020-10-06T06:45:33.003Z WRN/device:plugins:data 7385 [LMK920TMef2ec11c] Unable to find device data { serial: 'LMK920TMef2ec11c',
  platform: 'Android',
  manufacturer: 'LGE',
  operator: **********',
  model: 'LM-K920',
  version: '10',
  abi: 'arm64-v8a',
  sdk: '29',
  product: 'acexlm',
  cpuPlatform: 'lito',
  openGLESVersion: '3.2',
  marketName: 'acexlm',
  display: 
   { id: 0,
     width: 1080,
     height: 2400,
     xdpi: 397.56500244140625,
     ydpi: 395.843994140625,
     fps: 60.000003814697266,
     density: 2.625,
     rotation: 0,
     secure: true,
     size: 6.643754683286824,
     url: '*******' },
  phone: { network: 'UNKNOWN' } }
2020-10-06T06:45:33.008Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] Touch origin is top left
2020-10-06T06:45:33.009Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] Requesting touch consumer to start
2020-10-06T06:45:33.010Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] Launching touch service
2020-10-06T06:45:33.031Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] Connecting to minitouch service
2020-10-06T06:45:33.089Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "open: Permission denied"
2020-10-06T06:45:33.090Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event6 for inspectionopen: Permission denied"
2020-10-06T06:45:33.090Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event5 for inspectionopen: Permission denied"
2020-10-06T06:45:33.091Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event2 for inspectionopen: Permission denied"
2020-10-06T06:45:33.091Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event4 for inspectionopen: Permission denied"
2020-10-06T06:45:33.091Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event0 for inspectionopen: Permission denied"
2020-10-06T06:45:33.092Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/mice for inspectionopen: Permission denied"
2020-10-06T06:45:33.092Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event1 for inspectionopen: Permission denied"
2020-10-06T06:45:33.092Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Unable to open device /dev/input/event3 for inspectionUnable to find a suitable touch device"
2020-10-06T06:45:33.093Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "using Android InputManager"
2020-10-06T06:45:33.163Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] Reading minitouch banner
2020-10-06T06:45:33.206Z INF/device:plugins:touch 7385 [LMK920TMef2ec11c] minitouch says: "Connection established"
2020-10-06T06:45:33.212Z INF/device:plugins:vnc 7385 [LMK920TMef2ec11c] Starting VNC server on port 7530
2020-10-06T06:45:33.214Z INF/device:plugins:browser 7385 [LMK920TMef2ec11c] Loading browser list
2020-10-06T06:45:33.236Z INF/device:plugins:browser 7385 [LMK920TMef2ec11c] Updating browser list
2020-10-06T06:45:33.239Z INF/device:plugins:mute 7385 [LMK920TMef2ec11c] Will not mute master volume
2020-10-06T06:45:33.401Z INF/device:resources:minirev 7385 [LMK920TMef2ec11c] Installing "/usr/lib/node_modules/stf/vendor/minirev/arm64-v8a/minirev" as "/data/local/tmp/minirev"
2020-10-06T06:45:33.601Z INF/device:plugins:forward 7385 [LMK920TMef2ec11c] Launching reverse port forwarding service
2020-10-06T06:45:33.622Z INF/device:plugins:forward 7385 [LMK920TMef2ec11c] Connecting to reverse port forwarding service
2020-10-06T06:45:33.760Z INF/device 7385 [LMK920TMef2ec11c] Fully operational

stf doctor
2020-10-06T07:01:17.627Z INF/cli:doctor 17539 [*] OS Arch: x64
2020-10-06T07:01:17.630Z INF/cli:doctor 17539 [*] OS Platform: linux
2020-10-06T07:01:17.631Z INF/cli:doctor 17539 [*] OS Platform: 3.10.0-1062.9.1.el7.x86_64
2020-10-06T07:01:17.631Z INF/cli:doctor 17539 [*] Using Node 8.15.0
2020-10-06T07:01:17.681Z INF/cli:doctor 17539 [*] Using ZeroMQ 4.1.4
2020-10-06T07:01:17.708Z ERR/cli:doctor 17539 [*] ProtoBuf is not installed (`protoc` is missing)
2020-10-06T07:01:17.709Z INF/cli:doctor 17539 [*] Using ADB 1.0.31
2020-10-06T07:01:17.741Z INF/cli:doctor 17539 [*] Using RethinkDB 2.3.6
2020-10-06T07:01:17.769Z INF/cli:doctor 17539 [*] Using GraphicsMagick 1.3.32

Help with Connecting 2 local LAN hosts to using docker

What is the issue or idea you have?
Sorry if this has already been asked I have two hosts on the same network, id like to use host 2 as a provider to host 1 and see the devices connected to both on one web GUI

Please provide the steps to reproduce the issue.
Host 1 ip : 192.168.0.74
Host 2 ip : 192.168.0.143

Host 1
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
docker run -d --name stf --net host devicefarmer/stf stf local -public-ip 192.168.0.74 --allow-remote

Host 2
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest

docker run -d --name stf --net host openstf/stf stf provider --name STF-VM --min-port 7400 --max-port 7700 --connect-sub tcp://192.168.0.74:7114 --connect-push tcp://192.168.0.74:7116 --group-timeout 20000 --public-ip 192.168.0.74 --storage-url http://192.168.0.74:7100/

What is the expected behavior?
id like 2 hosts with devices connected to each to show up on the one web interface preferable by deploying using docker.

at the moment docker is working correctly for devices on host 1 , however devices on host 2 are not showing up in the GUI, along with STFService never starts on the devices connected to host 2

Thanks in advance for any help.

How to maintain a long-term connection with the phone, now 15 minutes of not operating the phone will automatically interrupt the connection with the phone

There is a problem. If I don't operate the mobile phone for 15 minutes after connecting to the mobile phone, it will automatically disconnect from the mobile phone. However, we need to do not operate the mobile phone for a long time to test the application, rather than let the mobile phone automatically disconnect. There is no relevant code in the source code to automatically disconnect the mobile phone. If possible, can the author tell us how to avoid operating the mobile phone for a long time and not automatically disconnect.
Every time the phone is connected to the phone for 15 minutes without operation, it will automatically disconnect

Thank you

Redmi Note 8 unable to display

Infinite loop

Manual installation of STFService.apk remains the same
MIUI: 11.0.6
AndroidOS: 9

stf_1        | 2020-07-23T05:35:24.245Z IMP/device:plugins:group 240 [1291d4df] Now owned by "[email protected]"
stf_1        | 2020-07-23T05:35:24.247Z INF/device:plugins:group 240 [1291d4df] Subscribing to group channel "84lE13ejTSepiHnmQ4bavg=="
stf_1        | 2020-07-23T05:35:24.553Z INF/device:plugins:screen:stream 240 [1291d4df] Setting frame producer projection to 753x1175
stf_1        | 2020-07-23T05:35:24.556Z INF/device:plugins:screen:stream 240 [1291d4df] Requesting frame producer to start
stf_1        | 2020-07-23T05:35:24.558Z INF/device:plugins:screen:stream 240 [1291d4df] Launching screen service
stf_1        | 2020-07-23T05:35:24.648Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "PID: 13485"
stf_1        | 2020-07-23T05:35:24.649Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: Using projection 1080x2340@542x1175/0"
stf_1        | 2020-07-23T05:35:24.651Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:241) Creating SurfaceComposerClient"
stf_1        | 2020-07-23T05:35:24.653Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:244) Performing SurfaceComposerClient init check"
stf_1        | 2020-07-23T05:35:24.656Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:255) Creating virtual display"
stf_1        | 2020-07-23T05:35:24.658Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:261) Creating buffer queue"
stf_1        | 2020-07-23T05:35:24.660Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:264) Setting buffer options"
stf_1        | 2020-07-23T05:35:24.666Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:268) Creating CPU consumer"
stf_1        | 2020-07-23T05:35:24.669Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:272) Creating frame waiter"
stf_1        | 2020-07-23T05:35:24.671Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "INFO: (external/MY_minicap/src/minicap_28.cpp:276) Publishing virtual display"
stf_1        | 2020-07-23T05:35:24.673Z INF/device:plugins:screen:stream 240 [1291d4df] minicap says: "Vector<> have different types (this=0x7ff7fc1c80, rhs=0x7ff7fc1da0)"
stf_1        | 2020-07-23T05:35:24.675Z INF/device:plugins:screen:stream 240 [1291d4df] Connecting to minicap service
stf_1        | 2020-07-23T05:35:24.754Z WRN/device:plugins:screen:stream 240 [1291d4df] Shell keeping minicap running ended unexpectedly
stf_1        | 2020-07-23T05:35:25.124Z INF/device:plugins:connect 240 [1291d4df] Listening on port 7433
stf_1        | 2020-07-23T05:35:25.131Z IMP/device:plugins:connect 240 [1291d4df] Remote Connect Started for device "1291d4df" at "202.39.9.120:7433"
stf_1        | 2020-07-23T05:35:26.239Z INF/device:plugins:screen:stream 240 [1291d4df] Disconnecting from minicap service
stf_1        | 2020-07-23T05:35:26.241Z INF/device:plugins:screen:stream 240 [1291d4df] Stopping minicap service
stf_1        | 2020-07-23T05:35:26.243Z FTL/device:plugins:screen:stream 240 [1291d4df] Frame producer had an error FailError: Failure: 'closed'
stf_1        |     at /app/node_modules/@devicefarmer/adbkit/lib/adb/parser.js:183:29
stf_1        |     at runCallback (timers.js:789:20)
stf_1        |     at tryOnImmediate (timers.js:751:5)
stf_1        |     at processImmediate [as _immediateCallback] (timers.js:722:5)
stf_1        | 2020-07-23T05:35:26.244Z FTL/util:lifecycle 240 [1291d4df] Shutting down due to fatal error
stf_1        | 2020-07-23T05:35:26.251Z INF/provider 44 [*] Cleaning up device worker "1291d4df"
stf_1        | 2020-07-23T05:35:26.252Z ERR/provider 44 [*] Device worker "1291d4df" died with code 1
stf_1        | 2020-07-23T05:35:26.252Z INF/provider 44 [*] Restarting device worker "1291d4df"
stf_1        | 2020-07-23T05:35:27.243Z INF/device:support:push 252 [1291d4df] Sending output to "tcp://127.0.0.1:7116"
stf_1        | 2020-07-23T05:35:27.248Z INF/device 252 [1291d4df] Preparing device
stf_1        | 2020-07-23T05:35:27.816Z INF/device:support:sub 252 [1291d4df] Receiving input from "tcp://127.0.0.1:7114"
stf_1        | 2020-07-23T05:35:27.817Z INF/device:support:sub 252 [1291d4df] Subscribing to permanent channel "*ALL"
stf_1        | 2020-07-23T05:35:27.907Z INF/device:support:properties 252 [1291d4df] Loading properties
stf_1        | 2020-07-23T05:35:27.984Z INF/device:support:sdk 252 [1291d4df] Supports SDK 28
stf_1        | 2020-07-23T05:35:27.987Z INF/device:support:abi 252 [1291d4df] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
stf_1        | 2020-07-23T05:35:28.232Z INF/device:resources:minicap 252 [1291d4df] Installing "/app/node_modules/@devicefarmer/minicap-prebuilt/prebuilt/arm64-v8a/bin/minicap" as "/data/local/tmp/minicap"
stf_1        | 2020-07-23T05:35:28.235Z INF/device:resources:minicap 252 [1291d4df] Installing "/app/node_modules/@devicefarmer/minicap-prebuilt/prebuilt/arm64-v8a/lib/android-28/minicap.so" as "/data/local/tmp/minicap.so"
stf_1        | 2020-07-23T05:35:28.406Z INF/device:resources:service 252 [1291d4df] Checking whether we need to install STFService
stf_1        | 2020-07-23T05:35:28.494Z INF/device:resources:service 252 [1291d4df] Running version check
stf_1        | 2020-07-23T05:35:28.900Z INF/device:resources:service 252 [1291d4df] STFService up to date
stf_1        | 2020-07-23T05:35:28.902Z INF/device:plugins:service 252 [1291d4df] Launching agent
stf_1        | 2020-07-23T05:35:29.608Z INF/device:plugins:service 252 [1291d4df] Agent says: "Listening on @stfagent"
stf_1        | 2020-07-23T05:35:29.638Z INF/device:plugins:service 252 [1291d4df] Launching service
stf_1        | 2020-07-23T05:35:29.641Z INF/device:plugins:service 252 [1291d4df] using 'start-foreground-service' command for API 28
stf_1        | 2020-07-23T05:35:29.646Z INF/device:plugins:service 252 [1291d4df] Agent says: "InputClient started"
stf_1        | 2020-07-23T05:35:29.793Z INF/device:plugins:display 252 [1291d4df] Reading display info
stf_1        | 2020-07-23T05:35:29.845Z INF/device:plugins:phone 252 [1291d4df] Fetching phone info
stf_1        | 2020-07-23T05:35:29.898Z INF/device:plugins:identity 252 [1291d4df] Solving identity
stf_1        | 2020-07-23T05:35:29.926Z INF/device:plugins:solo 252 [1291d4df] Subscribing to permanent channel "+AU4+eTn4OUDnfMucaaUztzTR7k="
stf_1        | 2020-07-23T05:35:29.932Z INF/device:plugins:screen:stream 252 [1291d4df] Starting WebSocket server on port 7436
stf_1        | 2020-07-23T05:35:30.177Z INF/device:resources:minitouch 252 [1291d4df] Installing "/app/node_modules/@devicefarmer/minitouch-prebuilt/prebuilt/arm64-v8a/bin/minitouch" as "/data/local/tmp/minitouch"
stf_1        | 2020-07-23T05:35:30.280Z WRN/device:plugins:data 252 [1291d4df] Unable to find device data { serial: '1291d4df',
stf_1        |   platform: 'Android',
stf_1        |   manufacturer: 'XIAOMI',
stf_1        |   operator: ',中國移動',
stf_1        |   model: 'Redmi Note 8',
stf_1        |   version: '9',
stf_1        |   abi: 'arm64-v8a',
stf_1        |   sdk: '28',
stf_1        |   product: 'ginkgo',
stf_1        |   cpuPlatform: 'trinket',
stf_1        |   openGLESVersion: '3.2',
stf_1        |   marketName: 'Redmi Note 8',
stf_1        |   display:
stf_1        |    { id: 0,
stf_1        |      width: 1080,
stf_1        |      height: 2340,
stf_1        |      xdpi: 409.4320068359375,
stf_1        |      ydpi: 409.90301513671875,
stf_1        |      fps: 60.000003814697266,
stf_1        |      density: 2.75,
stf_1        |      rotation: 0,
stf_1        |      secure: true,
stf_1        |      size: 6.288630704837173,
stf_1        |      url: 'ws://202.39.9.120:7436' },
stf_1        |   phone: { network: 'LTE' } }
stf_1        | 2020-07-23T05:35:30.305Z INF/device:plugins:touch 252 [1291d4df] Touch origin is top left
stf_1        | 2020-07-23T05:35:30.307Z INF/device:plugins:touch 252 [1291d4df] Requesting touch consumer to start
stf_1        | 2020-07-23T05:35:30.310Z INF/device:plugins:touch 252 [1291d4df] Launching touch service
stf_1        | 2020-07-23T05:35:30.332Z INF/device:plugins:touch 252 [1291d4df] Connecting to minitouch service
stf_1        | 2020-07-23T05:35:30.372Z INF/device:plugins:touch 252 [1291d4df] minitouch says: "Type B touch device NVTCapacitiveTouchScreen (1079x2339 with 10 contacts) detected on /dev/input/event2 (score 22597)"
stf_1        | 2020-07-23T05:35:30.454Z INF/device:plugins:touch 252 [1291d4df] Reading minitouch banner
stf_1        | 2020-07-23T05:35:30.459Z INF/device:plugins:touch 252 [1291d4df] minitouch says: "Connection established"
stf_1        | 2020-07-23T05:35:30.511Z INF/device:plugins:vnc 252 [1291d4df] Starting VNC server on port 7438
stf_1        | 2020-07-23T05:35:30.519Z INF/device:plugins:browser 252 [1291d4df] Loading browser list
stf_1        | 2020-07-23T05:35:30.554Z INF/device:plugins:browser 252 [1291d4df] Updating browser list
stf_1        | 2020-07-23T05:35:30.562Z INF/device:plugins:mute 252 [1291d4df] Will not mute master volume
stf_1        | 2020-07-23T05:35:30.833Z INF/device:resources:minirev 252 [1291d4df] Installing "/app/vendor/minirev/arm64-v8a/minirev" as "/data/local/tmp/minirev"
stf_1        | 2020-07-23T05:35:30.944Z INF/device:plugins:forward 252 [1291d4df] Launching reverse port forwarding service
stf_1        | 2020-07-23T05:35:30.973Z INF/device:plugins:forward 252 [1291d4df] Connecting to reverse port forwarding service
stf_1        | 2020-07-23T05:35:31.229Z INF/device 252 [1291d4df] Fully operational

MI9 failed to show the screen after click the `use`

What is the issue or idea you have?

Does it only happen on a specific device? Please run adb devices -l and paste the corresponding row.

Please provide the steps to reproduce the issue.

What is the expected behavior?
MI9 can see the screen after click the use button

Do you see errors or warnings in the stf local output? If so, please paste them or the full log here.

Please run stf doctor and paste the output here.

STF version: devicefarmer/stf:latest

STF logs as below:
android-provider2_1 | 2020-09-09T01:28:33.904Z IMP/device:plugins:group 13 [35fbffe7] Now owned by "[email protected]"
android-provider2_1 | 2020-09-09T01:28:33.906Z INF/device:plugins:group 13 [35fbffe7] Subscribing to group channel "T9qTVtveQzSknyebPA78wQ=="
android-provider2_1 | 2020-09-09T01:28:33.998Z INF/device:plugins:screen:stream 13 [35fbffe7] Setting frame producer projection to 645x846
android-provider2_1 | 2020-09-09T01:28:34.001Z INF/device:plugins:screen:stream 13 [35fbffe7] Requesting frame producer to start
nginx_1 | 10.0.2.2 - - [09/Sep/2020:01:28:34 +0000] "GET /static/app/browsers/icon/36x36/android-browser.png HTTP/1.1" 200 3358 "http://192.168.33.100/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0"
nginx_1 | 10.0.2.2 - - [09/Sep/2020:01:28:34 +0000] "GET /static/app/browsers/icon/36x36/chrome.png HTTP/1.1" 200 2388 "http://192.168.33.100/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0"
android-provider2_1 | 2020-09-09T01:28:34.005Z INF/device:plugins:screen:stream 13 [35fbffe7] Launching screen service
android-provider2_1 | 2020-09-09T01:28:34.044Z INF/device:plugins:connect 13 [35fbffe7] Listening on port 7451
android-provider2_1 | 2020-09-09T01:28:34.048Z IMP/device:plugins:connect 13 [35fbffe7] Remote Connect Started for device "35fbffe7" at "192.168.33.100:7451"
android-provider2_1 | 2020-09-09T01:28:34.052Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "PID: 11806"
android-provider2_1 | 2020-09-09T01:28:34.054Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: Using projection 1080x2340@390x846/0"
android-provider2_1 | 2020-09-09T01:28:34.055Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:241) Creating SurfaceComposerClient"
android-provider2_1 | 2020-09-09T01:28:34.057Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:244) Performing SurfaceComposerClient init check"
android-provider2_1 | 2020-09-09T01:28:34.058Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:255) Creating virtual display"
android-provider2_1 | 2020-09-09T01:28:34.059Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:261) Creating buffer queue"
android-provider2_1 | 2020-09-09T01:28:34.061Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:264) Setting buffer options"
android-provider2_1 | 2020-09-09T01:28:34.062Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:268) Creating CPU consumer"
android-provider2_1 | 2020-09-09T01:28:34.064Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:272) Creating frame waiter"
android-provider2_1 | 2020-09-09T01:28:34.071Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "INFO: (external/MY_minicap/src/minicap_29.cpp:276) Publishing virtual display"
android-provider2_1 | 2020-09-09T01:28:34.073Z INF/device:plugins:screen:stream 13 [35fbffe7] minicap says: "Vector<> have different types (this=0x7fca0f0de0, rhs=0x7fca0f0f30)"
android-provider2_1 | 2020-09-09T01:28:34.075Z INF/device:plugins:screen:stream 13 [35fbffe7] Connecting to minicap service
android-provider2_1 | 2020-09-09T01:28:34.081Z INF/device:plugins:connect 13 [35fbffe7] New remote ADB connection from ::ffff:10.0.2.2
android-provider2_1 | 2020-09-09T01:28:34.100Z WRN/device:plugins:screen:stream 13 [35fbffe7] Shell keeping minicap running ended unexpectedly
android-provider2_1 | 2020-09-09T01:28:35.619Z INF/device:plugins:screen:stream 13 [35fbffe7] Disconnecting from minicap service
android-provider2_1 | 2020-09-09T01:28:35.622Z INF/device:plugins:screen:stream 13 [35fbffe7] Stopping minicap service
android-provider2_1 | 2020-09-09T01:28:35.623Z FTL/device:plugins:screen:stream 13 [35fbffe7] Frame producer had an error FailError: Failure: 'closed'
android-provider2_1 | at /app/node_modules/@devicefarmer/adbkit/lib/adb/parser.js:183:29
android-provider2_1 | at runCallback (timers.js:789:20)
android-provider2_1 | at tryOnImmediate (timers.js:751:5)
android-provider2_1 | at processImmediate [as _immediateCallback] (timers.js:722:5)
android-provider2_1 | 2020-09-09T01:28:35.625Z FTL/util:lifecycle 13 [35fbffe7] Shutting down due to fatal error
android-provider2_1 | 2020-09-09T01:28:35.634Z INF/provider 1 [] Cleaning up device worker "35fbffe7"
android-provider2_1 | 2020-09-09T01:28:35.635Z ERR/provider 1 [] Device worker "35fbffe7" died with code 1
android-provider2_1 | 2020-09-09T01:28:35.635Z INF/provider 1 [*] Restarting device worker "35fbffe7"
android-provider2_1 | 2020-09-09T01:28:36.443Z INF/device:support:push 49 [35fbffe7] Sending output to "tcp://dev-triproxy:7270"
android-provider2_1 | 2020-09-09T01:28:36.447Z INF/device 49 [35fbffe7] Preparing device
android-provider2_1 | 2020-09-09T01:28:36.958Z INF/device:support:sub 49 [35fbffe7] Receiving input from "tcp://dev-triproxy:7250"
android-provider2_1 | 2020-09-09T01:28:36.961Z INF/device:support:sub 49 [35fbffe7] Subscribing to permanent channel "*ALL"
android-provider2_1 | 2020-09-09T01:28:37.012Z INF/device:support:properties 49 [35fbffe7] Loading properties
android-provider2_1 | 2020-09-09T01:28:37.045Z INF/device:support:sdk 49 [35fbffe7] Supports SDK 29
android-provider2_1 | 2020-09-09T01:28:37.047Z INF/device:support:abi 49 [35fbffe7] Supports ABIs arm64-v8a, armeabi-v7a, armeabi
android-provider2_1 | 2020-09-09T01:28:37.187Z INF/device:resources:minicap 49 [35fbffe7] Installing "/app/node_modules/@devicefarmer/minicap-prebuilt/prebuilt/arm64-v8a/bin/minicap" as "/data/local/tmp/minicap"
android-provider2_1 | 2020-09-09T01:28:37.188Z INF/device:resources:minicap 49 [35fbffe7] Installing "/app/node_modules/@devicefarmer/minicap-prebuilt/prebuilt/arm64-v8a/lib/android-29/minicap.so" as "/data/local/tmp/minicap.so"
android-provider2_1 | 2020-09-09T01:28:37.270Z INF/device:resources:service 49 [35fbffe7] Checking whether we need to install STFService
android-provider2_1 | 2020-09-09T01:28:37.315Z INF/device:resources:service 49 [35fbffe7] Running version check
android-provider2_1 | 2020-09-09T01:28:37.551Z INF/device:resources:service 49 [35fbffe7] STFService up to date
android-provider2_1 | 2020-09-09T01:28:37.556Z INF/device:plugins:service 49 [35fbffe7] Launching agent
android-provider2_1 | 2020-09-09T01:28:37.883Z INF/device:plugins:service 49 [35fbffe7] Agent says: "Starting minitouch agent"
android-provider2_1 | 2020-09-09T01:28:37.901Z INF/device:plugins:service 49 [35fbffe7] Agent says: "Listening on @stfagent"
android-provider2_1 | 2020-09-09T01:28:37.915Z INF/device:plugins:service 49 [35fbffe7] Launching service
android-provider2_1 | 2020-09-09T01:28:37.916Z INF/device:plugins:service 49 [35fbffe7] using 'start-foreground-service' command for API 29
android-provider2_1 | 2020-09-09T01:28:37.918Z INF/device:plugins:service 49 [35fbffe7] Agent says: "InputClient started"
android-provider2_1 | 2020-09-09T01:28:37.967Z INF/device:plugins:display 49 [35fbffe7] Reading display info
android-provider2_1 | 2020-09-09T01:28:37.982Z INF/device:plugins:phone 49 [35fbffe7] Fetching phone info
android-provider2_1 | 2020-09-09T01:28:37.996Z INF/device:plugins:identity 49 [35fbffe7] Solving identity
android-provider2_1 | 2020-09-09T01:28:38.004Z INF/device:plugins:solo 49 [35fbffe7] Subscribing to permanent channel "dXV5c4EV96KRZMyT48Lo17Vv3Dg="
android-provider2_1 | 2020-09-09T01:28:38.006Z INF/device:plugins:screen:stream 49 [35fbffe7] Starting WebSocket server on port 7462
android-provider2_1 | 2020-09-09T01:28:38.135Z INF/device:resources:minitouch 49 [35fbffe7] Installing "/app/node_modules/@devicefarmer/minitouch-prebuilt/prebuilt/arm64-v8a/bin/minitouch" as "/data/local/tmp/minitouch"
android-provider2_1 | 2020-09-09T01:28:38.175Z WRN/device:plugins:data 49 [35fbffe7] Unable to find device data { serial: '35fbffe7',
android-provider2_1 | platform: 'Android',
android-provider2_1 | manufacturer: 'XIAOMI',
android-provider2_1 | operator: null,
android-provider2_1 | model: 'MI 9',
android-provider2_1 | version: '10',
android-provider2_1 | abi: 'arm64-v8a',
android-provider2_1 | sdk: '29',
android-provider2_1 | product: 'cepheus',
android-provider2_1 | cpuPlatform: 'msmnile',
android-provider2_1 | openGLESVersion: '3.2',
android-provider2_1 | marketName: 'MI 9',
android-provider2_1 | display:
android-provider2_1 | { id: 0,
android-provider2_1 | width: 1080,
android-provider2_1 | height: 2340,
android-provider2_1 | xdpi: 403.4110107421875,
android-provider2_1 | ydpi: 404.32598876953125,
android-provider2_1 | fps: 60.000003814697266,
android-provider2_1 | density: 2.75,
android-provider2_1 | rotation: 0,
android-provider2_1 | secure: true,
android-provider2_1 | size: 6.37662511715682,
android-provider2_1 | url: 'ws://192.168.33.100:7462' },
android-provider2_1 | phone: { network: 'UNKNOWN' } }
android-provider2_1 | 2020-09-09T01:28:38.181Z INF/device:plugins:touch 49 [35fbffe7] Touch origin is top left
android-provider2_1 | 2020-09-09T01:28:38.182Z INF/device:plugins:touch 49 [35fbffe7] Requesting touch consumer to start
android-provider2_1 | 2020-09-09T01:28:38.184Z INF/device:plugins:touch 49 [35fbffe7] Launching touch service
android-provider2_1 | 2020-09-09T01:28:38.200Z INF/device:plugins:touch 49 [35fbffe7] Connecting to minitouch service
android-provider2_1 | 2020-09-09T01:28:38.209Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "open: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.211Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event7 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.214Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event6 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.215Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event5 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.216Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event3 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.218Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event0 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.219Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event1 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.221Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event2 for inspectionopen: Permission denied"
android-provider2_1 | 2020-09-09T01:28:38.222Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Unable to open device /dev/input/event4 for inspectionUnable to find a suitable touch device"
android-provider2_1 | 2020-09-09T01:28:38.223Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "using Android InputManager"
android-provider2_1 | 2020-09-09T01:28:38.316Z INF/device:plugins:touch 49 [35fbffe7] Reading minitouch banner
android-provider2_1 | 2020-09-09T01:28:38.319Z INF/device:plugins:touch 49 [35fbffe7] minitouch says: "Connection established"
android-provider2_1 | 2020-09-09T01:28:38.323Z INF/device:plugins:vnc 49 [35fbffe7] Starting VNC server on port 7464
android-provider2_1 | 2020-09-09T01:28:38.326Z INF/device:plugins:browser 49 [35fbffe7] Loading browser list
android-provider2_1 | 2020-09-09T01:28:38.336Z INF/device:plugins:browser 49 [35fbffe7] Updating browser list
android-provider2_1 | 2020-09-09T01:28:38.337Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.alibaba.android.rimet"
android-provider2_1 | 2020-09-09T01:28:38.339Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.baidu.haokan"
android-provider2_1 | 2020-09-09T01:28:38.340Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.baidu.searchbox"
android-provider2_1 | 2020-09-09T01:28:38.341Z WRN/device:plugins:browser 49 [35fbffe7] Unmapped browser "com.sina.weibo"
android-provider2_1 | 2020-09-09T01:28:38.347Z INF/device:plugins:mute 49 [35fbffe7] Will not mute master volume
android-provider2_1 | 2020-09-09T01:28:38.461Z INF/device:resources:minirev 49 [35fbffe7] Installing "/app/vendor/minirev/arm64-v8a/minirev" as "/data/local/tmp/minirev"
android-provider2_1 | 2020-09-09T01:28:38.516Z INF/device:plugins:forward 49 [35fbffe7] Launching reverse port forwarding service
android-provider2_1 | 2020-09-09T01:28:38.534Z INF/device:plugins:forward 49 [35fbffe7] Connecting to reverse port forwarding service
android-provider2_1 | 2020-09-09T01:28:38.695Z INF/device 49 [35fbffe7] Fully operational
nginx_1 | 10.0.2.2 - - [09/Sep/2020:01:28:39 +0000] "GET /static/app/devices/icon/x120/E30HT.jpg HTTP/1.1" 200 1528 "http://192.168.33.100/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:80.0) Gecko/20100101 Firefox/80.0"

login failed serveral times(with ldap) will throw error

Hi all, anyone can help me ?
stf version: 3.4.1
stf intergate with ldap, if someone login failed serveral times(maybe input wrong password or account), stf will throw error and other users will disconnect his device, this is error logs:

2020-08-27T06:19:26.581Z WRN/auth-ldap 49 [::ffff:127.0.0.1] Authentication failure for "xxxxxxx"
events.js:183
throw er; // Unhandled 'error' event
^

Error: connect ETIMEDOUT 10.122.128.41:389
at Object._errnoException (util.js:1024:11)
at _exceptionWithHostPort (util.js:1046:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)
2020-08-27T06:19:32.337Z FTL/cli:local 1 [] Child process had an error ExitError: Exit code "1"
at ChildProcess. (/app/lib/util/procutil.js:49:23)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
2020-08-27T06:19:32.337Z INF/cli:local 1 [
] Shutting down all child processes
2020-08-27T06:19:32.340Z INF/util:lifecycle 18 [app001] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 24 [proc001] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 29 [proc002] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 19 [dev001] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 30 [reaper001] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 36 [] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 54 [
] Winding down for graceful exit
2020-08-27T06:19:32.341Z INF/util:lifecycle 72 [] Winding down for graceful exit
2020-08-27T06:19:32.344Z WRN/db 24 [proc001] Connection closed
2020-08-27T06:19:32.344Z WRN/db 30 [reaper001] Connection closed
2020-08-27T06:19:32.344Z WRN/db 72 [
] Connection closed
2020-08-27T06:19:32.344Z INF/provider 36 [] Cleaning up device worker "291bb795dfef"
2020-08-27T06:19:32.344Z WRN/db 54 [
] Connection closed
2020-08-27T06:19:32.344Z INF/provider 36 [] Cleaning up device worker "1234567890ABCDEF"
2020-08-27T06:19:32.344Z INF/provider 36 [
] Cleaning up device worker "6EJ7N19323006352"
2020-08-27T06:19:32.345Z INF/provider 36 [] Cleaning up device worker "AQ4TOFJNG6NZK7HA"
2020-08-27T06:19:32.345Z INF/provider 36 [
] Cleaning up device worker "c8cf3640"
2020-08-27T06:19:32.345Z INF/provider 36 [] Cleaning up device worker "b340d99"
2020-08-27T06:19:32.345Z INF/provider 36 [
] Gracefully killing device worker "291bb795dfef"
2020-08-27T06:19:32.345Z INF/util:lifecycle 67 [*] Winding down for graceful exit

Device screen became to gray after refresh browser

When I am using the device, click on button refresh browser, the device screen became to gray, and there is a error was throw on stream.js file

events.js:183
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at TCP.onread (net.js:622:25)

This is because we dont listen to error event on WebSocket connection. I added these lines in stream.js (lib/units/device/plugins/screen/stream.js) to fix it

wss.on('connection', function (ws) {
...
ws.on("error", (err) => {
log.error(err.stack)
});

...
})

image

Dependabot can't resolve your JavaScript dependency files

Dependabot can't resolve your JavaScript dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Error whilst updating protobufjs in /yarn.lock:
Couldn't find any versions for "@devicefarmer/adbkit" that matches "^2.11.2"

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

macOS cannot find the device

mac OS : 10.15
stf : docker openstf/stf

--------------------------------------------------------

## Adb installed, The device can be found on mac

tinxie@HyperG-tinxie-Mac-mini Downloads % adb devices
List of devices attached
03157df3bb25630f device
33004e9bb8cc62b5 device
4100a88be439b141 device
FA76K1801590 device
QV7217LF24 device
b37d9aaf device
--------------------------------------------------------

## Run docker-compose cannot find the device

tinxie@HyperG-tinxie-Mac-mini official_hg % docker-compose up
Creating network "official_hg_n_teststf" with driver "bridge"
Creating official_hg_rethinkdb_1 ... done
Creating official_hg_adbd_1 ... done
Creating official_hg_stf_1 ... done
Attaching to official_hg_adbd_1, official_hg_rethinkdb_1, official_hg_stf_1
adbd_1 | adb I 07-17 07:50:08 7 7 adb_auth_host.cpp:416] adb_auth_init...
adbd_1 | adb I 07-17 07:50:08 7 7 adb_auth_host.cpp:174] read_key_file '/root/.android/adbkey'...
adbd_1 | adb I 07-17 07:50:08 7 7 adb_auth_host.cpp:391] adb_auth_inotify_init...
stf_1 | 2020-07-17T07:50:10.616Z INF/util:procutil 6 [] Forking "/app/lib/cli migrate"
stf_1 | 2020-07-17T07:50:10.820Z INF/db 13 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:10.833Z INF/db:setup 13 [] Database "stf" created
stf_1 | 2020-07-17T07:50:11.192Z INF/db:setup 13 [] Table "groups" created
stf_1 | 2020-07-17T07:50:11.194Z INF/db:setup 13 [] Table "vncauth" created
stf_1 | 2020-07-17T07:50:11.196Z INF/db:setup 13 [] Index "groups"."privilege" created
stf_1 | 2020-07-17T07:50:11.196Z INF/db:setup 13 [] Waiting for index "groups"."privilege"
stf_1 | 2020-07-17T07:50:11.201Z INF/db:setup 13 [] Index "vncauth"."response" created
stf_1 | 2020-07-17T07:50:11.201Z INF/db:setup 13 [] Waiting for index "vncauth"."response"
stf_1 | 2020-07-17T07:50:11.203Z INF/db:setup 13 [] Index "groups"."owner" created
stf_1 | 2020-07-17T07:50:11.203Z INF/db:setup 13 [] Waiting for index "groups"."owner"
stf_1 | 2020-07-17T07:50:11.210Z INF/db:setup 13 [] Index "vncauth"."responsePerDevice" created
stf_1 | 2020-07-17T07:50:11.210Z INF/db:setup 13 [] Waiting for index "vncauth"."responsePerDevice"
stf_1 | 2020-07-17T07:50:11.212Z INF/db:setup 13 [] Index "groups"."startTime" created
stf_1 | 2020-07-17T07:50:11.212Z INF/db:setup 13 [] Waiting for index "groups"."startTime"
stf_1 | 2020-07-17T07:50:11.250Z INF/db:setup 13 [] Index "groups"."privilege" is ready
stf_1 | 2020-07-17T07:50:11.253Z INF/db:setup 13 [] Index "vncauth"."response" is ready
stf_1 | 2020-07-17T07:50:11.255Z INF/db:setup 13 [] Index "groups"."owner" is ready
stf_1 | 2020-07-17T07:50:11.263Z INF/db:setup 13 [] Index "vncauth"."responsePerDevice" is ready
stf_1 | 2020-07-17T07:50:11.265Z INF/db:setup 13 [] Index "groups"."startTime" is ready
stf_1 | 2020-07-17T07:50:11.387Z INF/db:setup 13 [] Table "devices" created
stf_1 | 2020-07-17T07:50:11.389Z INF/db:setup 13 [] Table "users" created
stf_1 | 2020-07-17T07:50:11.390Z INF/db:setup 13 [] Table "logs" created
stf_1 | 2020-07-17T07:50:11.392Z INF/db:setup 13 [] Table "accessTokens" created
stf_1 | 2020-07-17T07:50:11.397Z INF/db:setup 13 [] Index "devices"."owner" created
stf_1 | 2020-07-17T07:50:11.398Z INF/db:setup 13 [] Waiting for index "devices"."owner"
stf_1 | 2020-07-17T07:50:11.400Z INF/db:setup 13 [] Index "users"."adbKeys" created
stf_1 | 2020-07-17T07:50:11.400Z INF/db:setup 13 [] Waiting for index "users"."adbKeys"
stf_1 | 2020-07-17T07:50:11.402Z INF/db:setup 13 [] Index "accessTokens"."email" created
stf_1 | 2020-07-17T07:50:11.402Z INF/db:setup 13 [] Waiting for index "accessTokens"."email"
stf_1 | 2020-07-17T07:50:11.406Z INF/db:setup 13 [] Index "devices"."logs_enabled" created
stf_1 | 2020-07-17T07:50:11.406Z INF/db:setup 13 [] Waiting for index "devices"."logs_enabled"
stf_1 | 2020-07-17T07:50:11.410Z INF/db:setup 13 [] Index "devices"."present" created
stf_1 | 2020-07-17T07:50:11.410Z INF/db:setup 13 [] Waiting for index "devices"."present"
stf_1 | 2020-07-17T07:50:11.414Z INF/db:setup 13 [] Index "devices"."providerChannel" created
stf_1 | 2020-07-17T07:50:11.415Z INF/db:setup 13 [] Waiting for index "devices"."providerChannel"
stf_1 | 2020-07-17T07:50:11.418Z INF/db:setup 13 [] Index "devices"."group" created
stf_1 | 2020-07-17T07:50:11.418Z INF/db:setup 13 [] Waiting for index "devices"."group"
stf_1 | 2020-07-17T07:50:11.451Z INF/db:setup 13 [] Index "devices"."owner" is ready
stf_1 | 2020-07-17T07:50:11.452Z INF/db:setup 13 [] Index "users"."adbKeys" is ready
stf_1 | 2020-07-17T07:50:11.454Z INF/db:setup 13 [] Index "accessTokens"."email" is ready
stf_1 | 2020-07-17T07:50:11.564Z INF/db:setup 13 [] Index "devices"."logs_enabled" is ready
stf_1 | 2020-07-17T07:50:11.565Z INF/db:setup 13 [] Index "devices"."present" is ready
stf_1 | 2020-07-17T07:50:11.568Z INF/db:setup 13 [] Index "devices"."providerChannel" is ready
stf_1 | 2020-07-17T07:50:11.572Z INF/db:setup 13 [] Index "devices"."group" is ready
stf_1 | 2020-07-17T07:50:12.619Z INF/util:procutil 6 [] Forking "/app/lib/cli triproxy app001 --bind-pub tcp://127.0.0.1:7111 --bind-dealer tcp://127.0.0.1:7112 --bind-pull tcp://127.0.0.1:7113"
stf_1 | 2020-07-17T07:50:12.621Z INF/util:procutil 6 [] Forking "/app/lib/cli triproxy dev001 --bind-pub tcp://127.0.0.1:7114 --bind-dealer tcp://127.0.0.1:7115 --bind-pull tcp://127.0.0.1:7116"
stf_1 | 2020-07-17T07:50:12.622Z INF/util:procutil 6 [] Forking "/app/lib/cli processor proc001 --connect-app-dealer tcp://127.0.0.1:7112 --connect-dev-dealer tcp://127.0.0.1:7115"
stf_1 | 2020-07-17T07:50:12.624Z INF/util:procutil 6 [] Forking "/app/lib/cli processor proc002 --connect-app-dealer tcp://127.0.0.1:7112 --connect-dev-dealer tcp://127.0.0.1:7115"
stf_1 | 2020-07-17T07:50:12.625Z INF/util:procutil 6 [] Forking "/app/lib/cli reaper reaper001 --connect-push tcp://127.0.0.1:7116 --connect-sub tcp://127.0.0.1:7111"
stf_1 | 2020-07-17T07:50:12.628Z INF/util:procutil 6 [] Forking "/app/lib/cli provider --name a3e1e07f9edc --min-port 7400 --max-port 7600 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 192.168.1.120 --storage-url http://localhost:3000/ --adb-host 172.44.0.7 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never"
stf_1 | 2020-07-17T07:50:12.629Z INF/util:procutil 6 [] Forking "/app/lib/cli auth-mock --port 7120 --secret kute kittykat --app-url http://192.168.1.120:3000/"
stf_1 | 2020-07-17T07:50:12.632Z INF/util:procutil 6 [] Forking "/app/lib/cli app --port 7105 --secret kute kittykat --auth-url http://192.168.1.120:3000/auth/mock/ --websocket-url http://192.168.1.120:7110/"
stf_1 | 2020-07-17T07:50:12.633Z INF/util:procutil 6 [] Forking "/app/lib/cli api --port 7106 --secret kute kittykat --connect-push tcp://127.0.0.1:7113 --connect-sub tcp://127.0.0.1:7111 --connect-push-dev tcp://127.0.0.1:7116 --connect-sub-dev tcp://127.0.0.1:7114"
stf_1 | 2020-07-17T07:50:12.636Z INF/util:procutil 6 [] Forking "/app/lib/cli groups-engine --connect-push tcp://127.0.0.1:7113 --connect-sub tcp://127.0.0.1:7111 --connect-push-dev tcp://127.0.0.1:7116 --connect-sub-dev tcp://127.0.0.1:7114"
stf_1 | 2020-07-17T07:50:12.640Z INF/util:procutil 6 [] Forking "/app/lib/cli websocket --port 7110 --secret kute kittykat --storage-url http://localhost:3000/ --connect-sub tcp://127.0.0.1:7111 --connect-push tcp://127.0.0.1:7113"
stf_1 | 2020-07-17T07:50:12.642Z INF/util:procutil 6 [] Forking "/app/lib/cli storage-temp --port 7102"
stf_1 | 2020-07-17T07:50:12.656Z INF/util:procutil 6 [] Forking "/app/lib/cli storage-plugin-image --port 7103 --storage-url http://localhost:3000/"
stf_1 | 2020-07-17T07:50:12.671Z INF/util:procutil 6 [] Forking "/app/lib/cli storage-plugin-apk --port 7104 --storage-url http://localhost:3000/"
stf_1 | 2020-07-17T07:50:12.691Z INF/util:procutil 6 [] Forking "/app/lib/cli poorxy --port 3000 --app-url http://localhost:7105/ --auth-url http://localhost:7120/ --api-url http://localhost:7106/ --websocket-url http://localhost:7110/ --storage-url http://localhost:7102/ --storage-plugin-image-url http://localhost:7103/ --storage-plugin-apk-url http://localhost:7104/"
stf_1 | 2020-07-17T07:50:12.849Z INF/triproxy 20 [dev001] PUB socket bound on tcp://127.0.0.1:7114
stf_1 | 2020-07-17T07:50:12.852Z INF/triproxy 20 [dev001] DEALER socket bound on tcp://127.0.0.1:7115
stf_1 | 2020-07-17T07:50:12.853Z INF/triproxy 20 [dev001] PULL socket bound on tcp://127.0.0.1:7116
stf_1 | 2020-07-17T07:50:12.854Z INF/triproxy 19 [app001] PUB socket bound on tcp://127.0.0.1:7111
stf_1 | 2020-07-17T07:50:12.857Z INF/triproxy 19 [app001] DEALER socket bound on tcp://127.0.0.1:7112
stf_1 | 2020-07-17T07:50:12.858Z INF/triproxy 19 [app001] PULL socket bound on tcp://127.0.0.1:7113
stf_1 | 2020-07-17T07:50:13.020Z INF/reaper 35 [reaper001] Subscribing to permanent channel "ALL"
stf_1 | 2020-07-17T07:50:13.024Z INF/reaper 35 [reaper001] Reaping devices with no heartbeat
stf_1 | 2020-07-17T07:50:13.028Z INF/db 35 [reaper001] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.027Z INF/db 22 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.033Z INF/reaper 35 [reaper001] Receiving input from "tcp://127.0.0.1:7111"
stf_1 | 2020-07-17T07:50:13.034Z INF/reaper 35 [reaper001] Sending output to "tcp://127.0.0.1:7116"
stf_1 | 2020-07-17T07:50:13.035Z INF/groups-engine 62 [] Subscribing to permanent channel "ALL"
stf_1 | 2020-07-17T07:50:13.044Z INF/groups-engine 62 [] Groups engine started
stf_1 | 2020-07-17T07:50:13.047Z INF/processor 22 [proc001] App dealer connected to "tcp://127.0.0.1:7112"
stf_1 | 2020-07-17T07:50:13.047Z INF/db 62 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.048Z INF/processor 22 [proc001] Device dealer connected to "tcp://127.0.0.1:7115"
stf_1 | 2020-07-17T07:50:13.053Z INF/groups-engine 62 [] Sending output to "tcp://127.0.0.1:7113"
stf_1 | 2020-07-17T07:50:13.054Z INF/groups-engine 62 [] Receiving input from "tcp://127.0.0.1:7111"
stf_1 | 2020-07-17T07:50:13.054Z INF/groups-engine 62 [] Sending output to "tcp://127.0.0.1:7116"
stf_1 | 2020-07-17T07:50:13.055Z INF/groups-engine 62 [] Receiving input from "tcp://127.0.0.1:7114"
stf_1 | 2020-07-17T07:50:13.061Z INF/db 30 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.086Z INF/processor 30 [proc002] App dealer connected to "tcp://127.0.0.1:7112"
stf_1 | 2020-07-17T07:50:13.087Z INF/processor 30 [proc002] Device dealer connected to "tcp://127.0.0.1:7115"
stf_1 | 2020-07-17T07:50:13.162Z INF/provider 42 [] Subscribing to permanent channel "SfhVCqm4TxGfYJT0LSC/ww=="
stf_1 | 2020-07-17T07:50:13.162Z INF/poorxy 98 [] Listening on port 3000
stf_1 | 2020-07-17T07:50:13.186Z INF/provider 42 [] Sending output to "tcp://127.0.0.1:7116"
stf_1 | 2020-07-17T07:50:13.187Z INF/provider 42 [] Receiving input from "tcp://127.0.0.1:7114"
stf_1 | 2020-07-17T07:50:13.191Z INF/provider 42 [] Tracking devices
stf_1 | 2020-07-17T07:50:13.237Z INF/storage:temp 79 [] Listening on port 7102
stf_1 | 2020-07-17T07:50:13.256Z INF/auth-mock 49 [] Listening on port 7120
stf_1 | 2020-07-17T07:50:13.272Z INF/db 49 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.317Z INF/storage:plugins:image 86 [] Listening on port 7103
stf_1 | 2020-07-17T07:50:13.334Z INF/storage:plugins:apk 92 [] Listening on port 7104
stf_1 | 2020-07-17T07:50:13.370Z INF/app 54 [] Using pre-built resources
stf_1 | 2020-07-17T07:50:13.378Z INF/app 54 [] Listening on port 7105
stf_1 | 2020-07-17T07:50:13.385Z INF/db 54 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.405Z INF/websocket 72 [] Subscribing to permanent channel "ALL"
stf_1 | 2020-07-17T07:50:13.409Z INF/websocket 72 [] Listening on port 7110
stf_1 | 2020-07-17T07:50:13.418Z INF/db 72 [] Connecting to 172.44.0.6:28015
stf_1 | 2020-07-17T07:50:13.422Z INF/websocket 72 [] Sending output to "tcp://127.0.0.1:7113"
stf_1 | 2020-07-17T07:50:13.422Z INF/websocket 72 [] Receiving input from "tcp://127.0.0.1:7111"
stf_1 | 2020-07-17T07:50:13.718Z INF/api 56 [] Subscribing to permanent channel "ALL"
stf_1 | 2020-07-17T07:50:13.746Z INF/api 56 [] Listening on port 7106
stf_1 | 2020-07-17T07:50:13.752Z INF/api 56 [] Sending output to "tcp://127.0.0.1:7113"
stf_1 | 2020-07-17T07:50:13.752Z INF/api 56 [] Receiving input from "tcp://127.0.0.1:7111"
stf_1 | 2020-07-17T07:50:13.752Z INF/api 56 [] Sending output to "tcp://127.0.0.1:7116"
stf_1 | 2020-07-17T07:50:13.753Z INF/api 56 [] Receiving input from "tcp://127.0.0.1:7114"
stf_1 | 2020-07-17T07:50:14.094Z INF/db 56 [] Connecting to 172.44.0.6:28015
--------------------------------------------------------

How can I solve it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.