Output pin set to HIGH, measure the output under open circuit by DMM, output voltage ~5V
Output pin connected to the relay coil input, voltage dropped to ~0.07V, which cannot turn it on
Different pins have been tested, all failed; BUT using onboard fixed 5V output pin to drive the relay, WORKS
Using DC supply to test the relay, operation is fine with the coil current much below 40mA
Under the condition of 3 and 4, it is believed that the circuit has no problem
Seems the problem is on the Arduino but I cannot figure out the reason
Is the USB power supply not enough? Or is there any other reason?
Maybe you have not set your pin to be an output. You could be seeing only the current from the pull-up circuit.
Conventionally, you would wire a TTL level relay between your output pin with the other leg going to +5V. Then put the output pin LOW to turn on the relay. Typically TTL logic outputs generate +5 via a pull-up resistor or similar weak current source.
Despite whether your relay coil can operate with small currents, I would still recommend using a transistor to drive it. There are plenty of examples and discussions in the playground and forums. Here's a couple of hits that I got: