Getting "deviceName can't be blank" error, even though the deviceName isn't blank

Hi.
Whether I try to run an automated test of an Android app through Eclipse or Command Line (in Fedora), I get the same error.

SessionNotCreatedError: A new session could not be created. Details: The
desiredCapabilities object was not valid for the following reason(s):
deviceName can’t be blank

I’m confused because the automation works on my Mac. Also, the log itself shows that the deviceName is not blank, so I don’t know why I’m getting this error. I’ll paste what Appium (v1.7.2-beta4) is showing below. If I need to provide more info, let me know. Any help would be appreciated. Thank you.

[BaseDriver] SessionNotCreatedError: A new session could not be created. Details: The desiredCapabilities object was not valid for the following reason(s): deviceName can’t be blank,
at AndroidDriver.validateDesiredCaps (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:184:25)
at AndroidDriver.validateDesiredCaps (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-android-driver/lib/driver.js:31:20)
at AndroidDriver.callee$0$0$ (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/session.js:23:8)
at tryCatch (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at invoke (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at enqueueResult (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
at new Promise ()
at new F (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
at AsyncIterator.enqueue (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
at AsyncIterator.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at Object.runtime.async (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
at AndroidDriver.callee$0$0 [as createSession] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-base-driver/build/lib/basedriver/commands/session.js:35:30)
at AndroidDriver.createSession$ (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-android-driver/lib/driver.js:31:20)
at tryCatch (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at invoke (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at enqueueResult (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
at new Promise ()
at new F (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
at AsyncIterator.enqueue (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
at AsyncIterator.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at Object.runtime.async (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
at AndroidDriver.createSession (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-android-driver/build/lib/driver.js:129:34)
at AppiumDriver.createSession$ (/home/lab/.npm-packages/lib/node_modules/appium/lib/appium.js:211:41)
at tryCatch (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at GeneratorFunctionPrototype.invoke (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at
at process._tickCallback (internal/process/next_tick.js:188:7)
{ SessionNotCreatedError: A new session could not be created. Details: The desiredCapabilities object was not valid for the following reason(s): deviceName can’t be blank,
at AndroidDriver.validateDesiredCaps (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:184:25)
at AndroidDriver.validateDesiredCaps (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-android-driver/lib/driver.js:31:20)
at AndroidDriver.callee$0$0$ (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/commands/session.js:23:8)
at tryCatch (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at invoke (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at enqueueResult (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
at new Promise ()
at new F (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
at AsyncIterator.enqueue (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
at AsyncIterator.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at Object.runtime.async (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
at AndroidDriver.callee$0$0 [as createSession] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-base-driver/build/lib/basedriver/commands/session.js:35:30)
at AndroidDriver.createSession$ (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-android-driver/lib/driver.js:31:20)
at tryCatch (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at invoke (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at enqueueResult (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
at new Promise ()
at new F (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
at AsyncIterator.enqueue (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
at AsyncIterator.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at Object.runtime.async (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
at AndroidDriver.createSession (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/appium-android-driver/build/lib/driver.js:129:34)
at AppiumDriver.createSession$ (/home/lab/.npm-packages/lib/node_modules/appium/lib/appium.js:211:41)
at tryCatch (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at GeneratorFunctionPrototype.invoke (/home/lab/.npm-packages/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at
at process._tickCallback (internal/process/next_tick.js:188:7) jsonwpCode: 33, w3cStatus: 500 }
[debug] [AndroidDriver] Shutting down Android driver
[debug] [AndroidDriver] Called deleteSession but bootstrap wasn’t active
[HTTP] <-- POST /wd/hub/session 500 31 ms - 199

I got past this problem by declaring the default capabilities as I launch the Appium server.

seems like in your .config file -> desired capabilities section, the ‘deviceName’:’’ options is either blank or isn’t even declared. E.g:

iOSClient: {
             port: 4723,
                desiredCapabilities: {
                    platformName: "iOS",
                    platformVersion: "11.2",
                    deviceName: "iPad Pro (9.7-inch)",

Hi. Can you share appium server creation with capabilities please?