Wednesday, July 3, 2019

Making A WhatsApp Video Call Without User Intervention

The code is pretty self explanatory. It needs a view with a TextView with id "editText" and a Button with id "button".

You enter the phone number to TextView and click on the button. It finds a user with this number and makes a video call using whatsapp with no user intervention.

The code can be changed to support VoIP calls also. Then the mimetype should show
"vnd.android.cursor.item/vnd.com.whatsapp.voip.call"

package com.example.whatsappcall;

import android.Manifest;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        askPermissions();

        Button clickButton = findViewById(R.id.button);
        clickButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (
                        checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED ||
                                checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED
                ) {
                    askPermissions();
                } else {
                    EditText eText = findViewById(R.id.editText);
                    // I am not checking correctness of number
                    Long _ID = getContactIdUsingNumber(eText.getText().toString(), v.getContext());
                    if (_ID != null) {
                        videoCall(_ID);
                    } else {
                        Toast.makeText(v.getContext(), "Number not found or can't accept video call!!!",
                                Toast.LENGTH_LONG).show();
                    }
                }
            }
        });


    }

    // Get required permissions
    public void askPermissions() {
        // Ask permissions
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.CALL_PHONE}, 1);
    }

    /*
     * Finds out if the given phone number has a whatsapp video call _ID
     */
    public Long getContactIdUsingNumber(String phoneNumber, Context context) {

        // Search contact using phone number
        Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
        ContentResolver resolver = context.getContentResolver();
        Cursor cursor = resolver.query(uri, null, null, null, null);

        // Store ID of the contact we are searching
        long contactId = 0L;
        if (cursor != null && cursor.getCount() > 0) {
            cursor.moveToFirst();
            contactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.PhoneLookup.CONTACT_ID));
        } else
            return null;

        // Make array of 1 element
        String[] selectionArgs = {Long.toString(contactId)};
        // Select clause to search for contact I
        String selectionClause = ContactsContract.Data.CONTACT_ID + " = ? ";

        Long _ID = null;
        cursor = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, selectionClause, selectionArgs, null);
        // Cursor can't be null but anyway...
        if (cursor != null)
            while (cursor.moveToNext()) {
                String mimeType = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE));
                if (mimeType.equals("vnd.android.cursor.item/vnd.com.whatsapp.video.call")) {
                    _ID = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data._ID));
                }
            }
        else
            return null;

        cursor.close();

        return _ID;
    }


    public void videoCall(Long _ID) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        String data = "content://com.android.contacts/data/" + Long.toString(_ID);
        String type = "vnd.android.cursor.item/vnd.com.whatsapp.video.call";
        intent.setDataAndType(Uri.parse(data), type);
        intent.setPackage("com.whatsapp");
        startActivity(intent);
    }

}

Saturday, June 1, 2019

Color Calibration Of Epson XP Printers

I have an Epson XP-540 multi-function printer and I was not happy with the printout colors. Not that my screen is calibrated either but I wanted to have somewhat consistent results.

For example I print an item, then scan and the resulting image was drastically different than original. Now you might imagine that the printer is not able to reproduce the correct colors with 100% accuracy.Yes you are right, but this was more than that.

Calibration

I followed the instructions from https://argyllcms.com/doc/Scenarios.html They were rather detailed and there are links to program command line options.

Profiling Scanner

First we need to calibrate the scanner. In my case the scanner came with a file XP540_R.icc which was calibration profile for the scanner. The info said XP-540/640 series scanner - reflective.

To be honest, I believe this was rather accurate but I was not sure of it so I have ordered an IT 8.7/2 Reflective Scanner Target online from http://www.targets.coloraid.de/ . The test target comes with reference data (which is necessary for profiling). It was neatly packed and quite nice. Also, it was relatively cheap and seemed worthwhile to try out. If you want to go super cheap, you can get away with using the calibration profile provided with the driver.

I scanned the target with a balanced set of settings. For me, they were gamma 2.5 and contrast -10

I used GIMP to check the histogram and color balance.

Above you can see that the RGB histogram peaks in the middle and I used the color picker to pickup color from grayscale number 11 and it was around the middle.

So I saved the output of scanner as scanner.tiff. I had Argyll CMS on upper directory. I copied it8.cht from the argyll's ref folder.

..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\scanin -dipn -v scanner.tif it8.cht R170830.txt
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\colprof -v -D"Epson XP-540" -qm -ax -ua scanner

This created scanner.icm and diag.tiff for seeing if the charg was recognized.

Profiling Printer

For profiling the printer we need to generate a printout with patches like the profiling target. It is quite straightforward. You first need to create the test chart.

..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\targen -v -d2 -f1014 EpsonXP540
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\printtarg -v -R 0 -s -T300 -iSS -pA4 EpsonXP540

This creates a target image like below:
You need to print it WITHOUT any color management in your printer. In my case I set the color management to manual and I disabled color adjustment from Advanced settings.
I also disabled all settings in Image Options

Once I scanned it using same settings (gamma 2.5, contrast -10), I got the result below. It looks different than original but that is the point.
Saved it as EpsonXP540_scanned.tif and created a printer profile. I used the sRGB.icm from the ref folder of Argyll CMS

..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\scanin -dipn -v -c EpsonXP540_scanned.tif EpsonXP540.cht scanner.icm EpsonXP540
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\colprof -v -D"Epson XP-540" -qm -S sRGB.icm -cmt -dpp EpsonXP540

Based on how far you want to go. This may be enough for you. But as it happens the Argyll CMS documentation suggests you to calibrate the printer now.

As far as I understand, the next calibration step. Apparently the calibration process checks the per channel color production, CMYK.

 Printer Calibration

Now we need to print a calibration chart. The documentation suggests we print a different type of test patch for our RGB printer. This supposedly tests maximum ink levels etc. I do not know why it does not test black levels for RGB printer. Do you? Leave a message!

We create chart, print it, scan it just the same as before. The last command creates the calibration file.

..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\targen -v -d2 -s336 -e3 -f0 EpsonXP540_c
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\printtarg -v -R 0 -s -T300 -iSS -pA4 EpsonXP540_c
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\scanin -dipn -v -c EpsonXP540_c_scanned.tif EpsonXP540_c.cht scanner.icm EpsonXP540_c
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\printcal -v -p -i EpsonXP540_c

Now, we should create the same profiling chart using the calibration file. Then scan it in and create profile.

..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\printtarg -v -R 0 -s -T300 -iSS -pA4 -KEpsonXP540_c.cal EpsonXP540
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\scanin -dipn -v -c EpsonXP540_scanned_calibrated.tif EpsonXP540.cht scanner.icm EpsonXP540
..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\colprof -v -D"Epson XP-540" -qm -S sRGB.icm -cmt -dpp EpsonXP540

There you go...

Results

So, here is what I did to see how this panned out.  I first had an original.
First I printed this with different color correction modes and scanned back in
Left up - no color correction, right up - default icm, left down - auto color correction (by driver), right down - self created profile icm

I applied the self created ICM with the windows color management utility. By selecting the printer and telling it to manually use the one I uploaded as default ICM profile.

Anyway, this does not seem to work. Instead I tried to apply profile to image manually using cctiff. Here the VX2835wm.ICM came with my monitor driver. However I think sRGB.icm would do the same.


..\Argyll_V2.1.1_win64_exe\Argyll_V2.1.1\bin\cctiff VX2835wm.ICM EpsonXP540.icm murviini.tiff murviini2.tiff

Then I printed it without color management and scan using the usual settings.
This looks pretty close to the original now. I do not know what the windows color management does exactly to make it yellow...

One interesting fact is that I enabled print preview in the Epson settings and in print preview it shows the data sent to printer. This appears to be image after the color management is applied. Below are images shown by the print preview!

The one on left is converted with cctiff and printed without color management.
The one on middle is printed with custom ICM using color management.
The one on the right is printed with printer's default ICM profile for plain paper.

As you can see, printer is doing something strange when ICM is selected in settings. It prints differently even though the preview shows exactly same result. I am not sure what to make of it. If you know why this is happening, please comment!

Friday, May 24, 2019

VW Golf MK4 Rear Wiper Washer Jet Nozzle Pipe Repair

The rear wiper nozzle was rotating with the wiper arm. I had to open and see what was going on. Apparently the o-ring was broken and stuck between the washer jet pipe and the wiper pipe.

Luckily I checked the issue fairly quickly before it developed a worse problem. In many cases people realize this when the washer jet pipe is broken due to friction as it is not centered anymore without the o-ring. This causes washer fluid to leak inside the rear hatch and break latch microswitch and other things.

There is a repair kit for this purpose with part number 8L0 998 711. But it is as expensive as new motor and also fits only Valeo model as the washer jet pipe is slightly different in Bosch.

 
So, it is best to repair it before it develops a worse problem. Below is a picture of the repair kit but I did NOT use it. But it comes with 1 small o-ring and 2 large o-rings (one is not visible in the picture as it is on the wiper arm shaft already.). I don't know if the large o-rings are same size as the front wiper arm shaft o-rings. But it looks like they are probably same size.


Dissassembly And Re-assembly

Luckily there are only 2 screws and 1 panel to remove to reach the wiper motor. In this Golf MK4 Estate / Variant model. The screws are inside the handles for closing the rear hatch. (philips head screws)

Once the screws are opened, the panel can be removed by pulling out. Use some plastic opening tools and start from the middle and be patient. It is easy to break the plastic pieces on this panel, if panel is removed unevenly (eg. one side pops out with force), as the clips are really tight.

Once the panel is removed, you can access the motor. The only thing to do is to remove the electrical connector by opening the latches using a small flathead screwdriver and the washer fluid pipe by pulling out.

Normally, once the small torx screws are removed. The rear panel should come off quite easily. In my case it was very difficult to pull it out as the o-ring was stuck between pipes and it was very difficult to pull it out. I had to use some flathead screwdrivers to pry it slowly out while turning around.

Above is a picture where the pipe is partially out. Once it goes off a little bit, it is possible to remove the rear plate.
Once it is removed, and it is in good condition. You only need to clean inside the wiper arm pipe before re-installation.

I found pieces of the small o-ring inside the wiper arm pipe. The washer fluid pipe outer diameter is 3.4mm and the wiper arm pipe inner diameter is 4.7mm. I found some 3mm inner diameter (I.D.) and 1mm thickness (C.S.) o-rings from AliExpress and it seemed to be exactly same as the original. So this makes 5mm outer diameter so it fits quite snugly.

I only had half of the original o-ring but I measured it was slightly thinner than the new o-ring. Perhaps years of usage may have thinned it a bit. But when I put them on top of each other, the curve matched perfectly.


As I pulled the inner pipe quite a bit when removing. It seems like it moved a bit out from it's plastic holder. I had to warm it up using hair drier and hammer it back in gently.

As you can see, it fit slightly too long before hammering it. It should normally be flush with the outer pipe.

Here is a picture I took when inserting the o-ring in place. I simply put it on top and push it down using the washer jet nozzle. Yes, it is swimming in bearing grease.

The installation is reverse of removal. It appears there fits 2 o-rings (3 o-rings is about 0.5mm too much!). So I pushed in two o-rings so it is now double sealed. Perhaps better than new?

There is another o-ring which is on the wiper arm shaft but I did not remove it. Perhaps it would be wise to check it also once in a while.


Monday, May 20, 2019

Epson Expression Premium Waste Ink Pad Replacement / Cleaning

Many expression premium printers have similar waste ink pads. Epson has 2 part numbers. First one is 1612118 and the second one is 1611102. You can always use the 1611102 in your replacements. They are often the same price and 1611102 has larger capacity.

Why Epson has two different parts? That is a matter of pricing. The smaller waste ink pad will be filled quicker and you will need to replace your printer more often. Epson has the smaller type in cheaper models, such as XP-540. At least mine had the smaller type.

Removing Waste Ink Pad Container

First you have to start by removing the two black screws holding a plastic trimpiece.
After that, you can simply lift it up and remove. You will gain access to two silver screws under it. Unfortunately I forgot to take picture of them :) The one on the right is deep inside the device so you may want to use a magnetic screwdriver head or a magnetic pickup tool.
After removing the plastic piece, you will gain access to one more screw. One was already visible. You may need to remove the paper tray completely to see it.
In this printer all the visible screws are black and others are silver colored. Once you remove these screws, you can also remove the lower cover piece.

You will gain access to one more silver screw. This screw and one under the device holds the waste ink pad container in place. The screw under the printer is shorter.
You may tilt the printer when doing this. However, ink may leak if container is too full. It should not be too full. But you never know.

The safer way is to put the printer on top a straight table and leave the container outside the table. As you can see, printer's legs are inside anyway.

You need a screwdriver to lift the plastic slightly to be able to pull the ink container down. Once the container is removed, you can clearly see the ink outlet.

Cleaning or Changing The Sponge

Normally all you need is to dry the sponges. Once they are dry, they should be able to absorb nearly as much liquid as they did originally. But you can also wash them.

One important thing to remember is to not give in to temptation of squeezing them. They will be flattened and won't work as well anymore.

The best way to clean them is simply putting them under running water until no ink comes out.

You can then dry the sponges on a heater or let them dry out outside etc. Make sure to not leave them on a surface which may absorb the ink. Because there comes out small amounts of ink even after through rinsing.

The installation is reverse of removal :) Here is the end result.

How Much Liquid Was Inside?

When I removed the ink container, first thing I did was to measure it's weight.
It weighted 148.2g then I weighted the container with washed, rinsed and dried pads again.
The weight is 61.6g. This tells me that the container was holding ~85g of liqud.

Some Experiments

I wanted to figure out if I could replace the pads with another material. The most logical choice was "magic sponge". It is super absorbent and easy to cut into shape.


 It was easy to install them to place.

The original sponge was 3.5cm high. But I used even smaller 3cm high magic sponge setting in my experiment.

First the dry weight. It was 57.2g
I have first filled the container with water, then turned it upside down until it stopped dripping. This way I could estimate how much liquid the sponge could absorb.

Wet weight 153.9g. So it managed to absorb ~95g easily. That is a pretty decent result considering I used a smaller piece of sponge.

By the way, you can literally buy 100 pieces of 10 x 6 x 2 cm sized magic sponge for less than 5euro! The container has six ~1cm thick pieces so you can use 3 sponges for 1 refill!

Below is outline of the pads (not to scale!) the last piece in the drawing is the middle part which has 3 of same pieces. Total number of pieces is 6.


The height of the smaller waste ink pad is 33mm and the container holds up to 58mm safely.

Saturday, May 4, 2019

Epson 33 / 33XL Cartridge Anatomy and Refilling

Most older cartridges have strange airways and passages in them. In some ways perhaps to justify filling cartridges half full. New Epson cartridges are smaller and they do seem to have a more straightforward construction.

It is possible to carefully cut open an Epson cartridge without damaging it. One side of the cartridge is airtight and this is the side which is opened in picture below. The other side simply has another wall under it.


As can be seen easily, the cartridge has a single main chamber. There is a tight canal where the ink outlet is.

The air inlet port is very tight. The cartridge is able to keep vacuum inside. It looks like the inside volume of the cartridge is designed to shrink as the ink is used. The metal plate in middle and the spring under it ensures that inside the cartridge is always negative pressure so the ink will not flow out.

If the inside volume nears zero. The metal plate presses to a lever which opens the air inlet port in corner until it gets in some air so the negative pressure will not rise beyond a level.

I have found out that the cartridge keeps negative pressure even if it has no liquids. There must be some mechanism or membrane at the ink outlet which does not allow air or liquids to travel towards inside the cartridge.

As can be seen below, cartridge keeps the foil completely pressed in with very little volume left inside. It does NOT replenish missing content with air. The air intake valve does not allow air intake even though the spring inside the cartridge is creating negative pressure.



Refilling Epson 33 / 33XL Cartridge


Unknown to most, the green cartridge caps do not make an airtight seal around the outlet port.


The cap will tighten the bottom of the cartridge perfectly. However the little pipe in front of the cartridge outlet is connected to the inside of the cartridge.

As can be seen clearly, the pipe is connected to space between the side wall and transparent foil. The side wall has a labyrinth and a hole to outside. The labyrinth is probably to keep the dust outside. I also found out that some cartridge walls are not completely sealed at factory as I have seen them leak at arbitrary points!

This means that you can't simply make a hole anywhere on the cartridge for filling. As even with the green cap installed, the cartridge will start leaking to inside immediately as there will be no negative pressure holding the ink. The ink will flow out from the outlet and enter to the pipe. It will then travel between the transparent plastic piece and the black wall with air hole.

Before I found out about this, I have drilled few cartridges from the top and tried to fill them. The result was that the ink eventually started coming out from the side wall hole. In some cartridges the wall was not totally sealed so it started seeping through the

Refilling Option 1


As the ink will flow out from cartridge if the negative pressure is stopped. We may only fill the cartridge from bottom. The only suitable place I found for this purpose is the prism eyelet.

You must drill the eyelet very carefully as it is only 2mm away from the plastic foil. I found out that eyelet gets drilled very quickly so do not apply any pressure to the drill.

Yes, the plug covers the eyelet hole but printer simply will think that there is ink. It is possible to put the flap other way around also. I felt little resistance first but cutting the little part of the wall solved the issue. Perhaps you may find smaller plugs also.



Even the ink must obey the laws of gravity. So it won't be leaking out from the output port when it is the highest point.

However, when plugging the hole, you must squeeze the cartridge from sides to expel as much air as possible. This way once you release the cartridge, there will be little negative pressure built inside it.

Refilling Option 2


So you prefer having a hole on top? That is also possible. As usual, you need to drill very carefully as within 2mm distance is the transparent plastic cover. Just use patience and do not press the drill down at all. Let it slowly form the hole.

As the air pressure balance pipe in the outlet is the problem. We can simply block it so the ink won't be able to flow down when the inside negative pressure is lost. You can simply put a small piece of silicone sealant using a toothpick to the hole.


Yes, it would perhaps be possible to re-open the hole after filling using a needle. But what happens if we don't? Perhaps ink flows more rapidly down due to negative pressure built when it is used by the ink head? I have left the hole plugged and did not see any negative consequences yet. Actually, none of the chinese cartridges have such hole either. I am not sure what worst can happen.

Then you need to make the hole in the middle of the cartridge where the other side is connected to top solidly.


Once the green cap is on, the ink will not be able to flow down due to pressure build up at the outlet. However, you still need to squeeze cartridge when inserting the plug. So once you relese it, there will be slight negative pressure built inside the cartridge. Without any negative pressure, cartridge may leak until pressure is balanced, once the green cap is removed.

One thing to consider is that in this position the plug interferes with the metal plate inside the cartridge. However it is probably not a problem. This can be seen in my very first picture which I took from the side of the cartridge.

Monday, April 29, 2019

WAGO vs Other Brand Terminal Connectors (namely VSELE)

WAGO terminal connectors are very well known worldwide. They can be quickly tightened and loosened without requiring any tools.  Unlike cheaper screw connectors, in most cases will not damage the wires when the terminal is tightened.

After intensive advertising and product introduction campaigns WAGO is probably the world leader in this type of terminal connectors. As many other expensive product producers there is wide assumption of superfluously high quality and cheaper products will burn your house down.

Is there really significant quality difference to warrant paying up to 2x-3x more per connector? The cost of the VSELE connector is about 7€ for 60 pieces and 100€ for 1000 pieces amounting to 10cents per piece!






So the WAGO connector was rated for 20A 300V and 3rd party connector was rated for 32A 400V (specifications can be accessed here). In reality this connector is a copy of WAGO 222-412 model.

Perhaps it is comparing apples and oranges. But I do not have access to WAGO 222-412 and VSELE does not seem to produce the smaller model. I will try to update the article if I can get a genuine WAGO 222-412 model.

Physical Appearance

The WAGO terminal connectors is significantly smaller in size. Perhaps a plus point if you are working at very tight spaces. However it seems to come at a cost as the walls are thinner. The competitor's part is significantly thicker and sturdy looking.

WAGO seems to be optimizing material savings. Perhaps for reducing costs. The less material used per connector will translate into cheaper production costs.

For example the competitor's wire holes are round while WAGO item trimmed it down to square saving materials. I have never seen square wire so I can't imagine why else the wire entrance hole would be square.

Heat Resistance


While WAGO did not mark the material used in the connector. The competitor's connector was marked PA66.

I made a naive test on the connectors by heating them up to ~100C then to ~150C. At ~100C I observed no change however at ~150C both connectors deformed.

In addition, both connector materials formed bubbles inside while the competitor's connector had more bubbles. This may be due to difference of thickness of the materials used.

Material Quality and Rust Resistance


After the heat test, it was impossible to operate the connectors anymore. Both were fused together. I could break into the casing of the WAGO terminal connector easily using pliers. However the competitor's product was simply too tough for pliers. I needed to use a rotary tool to cut into it and even then it was quite difficult. Perhaps this is where the thickness help.

I have submerged both connectors into white vinegar and the metal parts on both seemed to survive. However WAGO developed an oxidation layer. Below is a picture taken after a day of submerging.


On left is WAGO where the white surface can be seen on the conductive material. On the right is the VSELE connector which seems uneffected.

Conductive Surfaces


Both connectors use internal latches to catch the wires. It looked like WAGO connector seem to align the internal latch so it will be angled to make it harder to remove the wire by pulling. While the competitor's latch dropped down straight on top of the wire.

The WAGO conductive surface was 0.5mm thick and the competitor used 0.8mm thick surface. The thicker conductive material will allow higher currents to pass. Perhaps in this case the reason was that the competitor's product was rated for higher current, although still cheaper than WAGO.

One difference in construction was that WAGO simply rely on the plastic pieces to keep the latch in place. So latch came out when the plastic was broken, potentially releasing the wires. While the competitor's latch was making a loop around the conductive surface then get back to push the wire down on it. So, it was operable even after breaking the plastic case into pieces.

Table of Differences



WAGO VSE-412
Size Smaller size - Smaller size may be beneficial
Heat Same Same Similar resistance to heat
Metal Quality - Resistant to corrosion Resistance to corrosion will allow better conductivity in the long run
Build Quality Same Same Similar build quality
Conductivity - Thicker material Thicker conductor will transfer larger current with less resistance
Latch - Stronger mechanism Stronger mechanism will keep wires attached in unlikely failure of the plastics

Conclusion


Perhaps there can be very poor quality chinese replicas of these connectors. However it would be unfair to judge the most expensive product on the market with the cheapest to draw a general conclusion.

Of course the sellers will try to sell you the most expensive product. Because most companies add a percent profit to their purchase price. This simply means more expensive product means more profit. In addition, expensive products are easier to replace in case of failures as the product price is so high to cover multiple replacements per item.

It looks like VSELE's connectors are high quality and much cheaper. So why not give them a try in your next purchase? VSELE says on their page "The comprehensive product line has more than 1000 models which have been approved by TUV, CE, CQC, SGS, ROHS,SASO. the products sells well to UK、Spain、Portugal、Singapore、Turkey、Russia、 Korea,South Africa…… more than 70 countries and regions."